两个日历日期之间的差异

时间:2014-02-10 06:20:34

标签: bash date unix julian

我有一个日期格式为YYYYMMDD的文件。我想找到文件中日期与朱利安数字当前日期之间的差异。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的输出格式要求 - 日期可以是朱利安(年份数和一年中的天数),但差异只是几天没有'朱利安'格式。

我不知道如何在shell中进行日期摆弄,所以我采用了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

第一个是将一个时间与'now'进行比较,第二个是将两个给定的日期进行比较。

请注意,您可能需要设置TZ = UTC,否则您可能会因夏季/冬季开关而失去一天。