如何获得今日的Julian day number (JDN)相等?或任何日期,就此而言?bash - 如何获取(当前)Julian日数?
我看了又看,但只发现生产的“年 - DAYOFYEAR”,而不是像一些功能:2457854.
如何获得今日的Julian day number (JDN)相等?或任何日期,就此而言?bash - 如何获取(当前)Julian日数?
我看了又看,但只发现生产的“年 - DAYOFYEAR”,而不是像一些功能:2457854.
我结束了移植一个自己。这里是一个SSCCE:
#!/bin/bash
function GetJulianDay # year, month, day
{
year=$1
month=$2
day=$3
jd=$((day - 32075 + 1461 * (year + 4800 - (14 - month)/12)/4 + 367 * (month - 2 + ((14 - month)/12) * 12)/12 - 3 * ((year + 4900 - (14 - month)/12)/100)/4))
echo $jd
}
function GetTodayJulianDay
{
year=`date +"%Y"`
month=`date +"%m"`
day=`date +"%d"`
todayJd=$(GetJulianDay $year $month $day)
echo $todayJd
}
# samples
todayJd=$(GetTodayJulianDay)
echo "got today jd: $todayJd"
yesterdayJd=$(GetJulianDay 2017 4 9)
echo "got yesterday jd: $yesterdayJd"
您可以用date +%s --date=YYYYMMDD
获得Unix的日期,并用它来compute the Julian Day from Unix date
它最终会是这样的:
echo $(($(date +%s --date=YYYYMMDD)/86400 + 2440587))
编辑:我不知道这有多重要,但有些人欢迎在转换中添加0.5。基本上这意味着如果您当前的日期/时间是在中午之后,则转换将在1天后放置Julian日期。
我使用了我们曾经使用过的久经考验的Java版本。你的看起来很整洁。当我有一些时间时,我会给它一个机会。 – Buffalo
in bash date +%j
返回julian日期。
[[email protected] ~]# date +%j
108
此外,未来的Julian日期也非常简单。
[[email protected] ~]# date --date='10 days' +%j
119
[[email protected] ~]# date --date='2 weeks' +%j
123
_“108”如何像JDN一样?请仔细阅读问题 – Buffalo
虽然它回答了错误的问题(序号日期/日年号而不是儒略日期),但这是一个有用的小命令。以下是两者之间的区别,说明为什么只有阅读问题标题可能会产生混淆:https://en.wikipedia.org/wiki/Julian_day#Terminology – kevinmicke
A +用于使用* navy.mil *资源。 * jpl.gov *网站对于这些事情也非常有用。 –