YYYYMMDD 形式の日付を含むファイルがあります。ファイル内の日付と現在の日付の違いをユリウス番号で見つけたいです。
1 に答える
0
出力形式の要件を理解しているかどうかわかりません。日付はユリウス (年の数と年の日数) にすることができますが、違いは「ユリウス」形式を持たない日数だけです。
シェルで日付をいじる方法がよくわからないので、perl に頼ります。
perl -e 'use POSIX qw(mktime); sub d2ts { return POSIX::mktime(0, 0, 0,
substr($_[0],6,2),substr($_[0],4,2)-1,substr($_[0],0,4)-1900); } print
int((time-d2ts($ARGV[0]))/86400), "\n";' '20131218'
==> 54
また
perl -e 'use POSIX qw(mktime); sub d2ts { return POSIX::mktime(0, 0, 0,
substr($_[0],6,2),substr($_[0],4,2)-1,substr($_[0],0,4)-1900); } print
int((d2ts($ARGV[1])-d2ts($ARGV[0]))/86400), "\n";' '20131218' '20140210'
==> 54
1 つ目は 1 回を「今」と比較するもので、2 つ目は特定の 2 つの日付を比較するものです。
おそらく TZ=UTC を設定する必要があることに注意してください。そうしないと、夏時間と冬時間の切り替えで 1 日を失う可能性があります。
于 2014-02-10T06:53:44.927 に答える