2017-04-10 21 views

答えて

1

。ここで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" 

テストそれ:http://aa.usno.navy.mil/data/docs/JulianDate.php

+1

* navy.mil *リソースを使用するためのA +。 * jpl.gov *サイトは、そのようなものにも非常に適しています。 –

0

あなたはdate +%s --date=YYYYMMDDとUnixの日付を取得し、それはのようなものに終わるだろうcompute the Julian Day from Unix date

にそれを使用することができます

echo $(($(date +%s --date=YYYYMMDD)/86400 + 2440587)) 

編集:これはどれくらい重要なのか分かりませんが、いくつかの人この変換に0.5を加えたいとします。基本的には、現在の日付/時刻が正午以降であれば、変換は1日後にユリウス日になります。

+0

私は試してみたJava版のJava版を使いました。あなたのものはもっと綺麗に見えます。私は時間があるときにチャンスを与えます。 – Buffalo

0

bash date +%jはジュリアン日付を返します。

[[email protected] ~]# date +%j 
108 

今後のジュリアンの日付もかなり簡単です。

[[email protected] ~]# date --date='10 days' +%j 
119 
[[email protected] ~]# date --date='2 weeks' +%j 
123 
+0

_How_ "108"はJDNのようなものに似ていますか?質問を徹底的にお読みください – Buffalo

+0

間違った質問に答えていますが(これは、Julianの日付ではなく、序数/年の数字です)、これは役に立つ小さなコマンドです。この2つの違いは、あなたが質問のタイトルだけを読むと混乱することがある理由を示しています:https://en.wikipedia.org/wiki/Julian_day#Terminology – kevinmicke

関連する問題