来自命令行的日出和其他天文数据

Gil*_*il' 22 command-line software-rec

是否有一个简单的开源命令行程序可以显示给定日期和位置的日出和日落时间,也许还有月球和行星数据?

浏览 Debian 软件包数据库和 Google 搜索,我找不到任何相关内容。这让我感到惊讶 - 考虑到同时是天文极客和 unix 极客的人数,我本来希望有一个事实上的标准sunrise(1)(或者可能是sunrise(6))。

我对偶然执行计算的更复杂的程序不感兴趣,例如天空地图(celestia,kstars,starplot,stellarium),地球地图(sunclock,xplanet),日历/议程(emacs,提醒),时钟(glunarclock,wmsun ),潮汐年鉴(xtide)。也许有aa天文历书),但我没有看到一种简单的方法来询问太阳在这些经度和纬度的这一天什么时候升起。

我错过了什么?

ech*_*hox 12

你试了sunwait吗?

http://www.risacher.org/sunwait/

Sunwait 是一个用于计算日出和日落以及民用、航海和天文黄昏的小型 C 程序。[..]


xer*_*mus 9

对于像我这样的懒人来说,有一个非常简单的程序,名为hdate,在许多发行版中都可用(apt-get install hdate在 Debian/Ubuntu/\xe2\x80\xa6 上):

\n\n
hdate -s -l N50 -L E14 -z2\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
Wednesday, 26 June 2019, 23 Sivan 5779\nsunrise: 04:55\nsunset: 21:17\n
Run Code Online (Sandbox Code Playgroud)\n\n

选项

\n\n
    \n
  • -s sunset sunrise
  • \n
  • -l, -L: 布拉格的海拔高度和纬度 (50\xc2\xb005\xe2\x80\xb2N 14\xc2\xb025\xe2\x80\xb2E)
  • \n
  • -z zone:SELC=+2
  • \n
\n\n

\xd7\xaa\xd7\x95\xd7\x93\xd7\x94 \xd7\xa8\xd7\x91\xd7\x94 \xd7\x99\xd7\x94\xd7\x95\xd7\x93\xd7\x99\xd7 \x9d\xd7\x97\xd7\x9b\xd7\x9e\xd7\x99\xd7\x9d。:-)

\n


Gil*_*il' 7

我最终使用了 Perl 的DateTime::Event::Sunrise,因为从 CPAN 部署模块比编译 C 程序更容易。

示例用法:

use DateTime;
use DateTime::Astro::Sunrise;
$latitude = "+48.857"; $longitude = "+2.351"; 
$sr = DateTime::Astro::Sunrise->new($longitude, $latitude, 0, 3);
$date = DateTime->now; $date->set_time_zone("local");
($rise, $set) = $sr->sunrise($date);
$rise->set_time_zone("local"); $set->set_time_zone("local");
print $rise, " to ", $set, "\n";
Run Code Online (Sandbox Code Playgroud)

我的sunrise脚本


MDe*_*usk 1

如果您已经安装了Dianne Skoll 的提醒程序\xe2\x80\x95,并且您应该这样做,如果您想要一个优秀的命令行提醒程序\xe2\x80\x95,它会这样做。创建一个“提醒”文件,例如,sun.rem包含以下两行:

\n
BANNER %\nREM Sunrise: [sunrise()] Sunset: [sunset()]\n
Run Code Online (Sandbox Code Playgroud)\n

并运行它:

\n

remind sun.rem

\n

它还提供月相附近的日期。我还没有弄清楚这些的优点。

\n
\n

Skoll 女士在邮件列表中建议的另一种可能性:

\n
# File day-or-night.rem\nBANNER %\nIF now() < sunrise() || now() > sunset()\n    MSG night%\nELSE\n    MSG day%\nENDIF\n
Run Code Online (Sandbox Code Playgroud)\n

我改用它是因为它省去了我拨打 的电话awk

\n
\n

这是一个支持自定义日期和位置的 shell 脚本。

\n
BANNER %\nREM Sunrise: [sunrise()] Sunset: [sunset()]\n
Run Code Online (Sandbox Code Playgroud)\n