我有一个包含两列的表格:年份和年份。我想将它们转换为日期(年 - 月 - 日)
以下命令似乎只能正确读取年份,而不是一年中的某一天:
date -j -f "%Y %j" "2005 241" +%F
2005-02-03
我在OS X上使用bash。有什么建议吗?
解决方案
$ yyyy="2015"; doy="241"; echo $(date -jf %s $(($(date -jf "%F %T" "$yyyy-01-01 23:59:30" +%s) + ((10#$doy - 1)) * 86400)) +"%F %T")
2015-08-29 23:59:30
$ date -j 082923592015 +%j
241
所以基本上,我们采用给定年份并构建当年第一天(即1月1日)的时间并将其转换为秒。然后,我们添加自一年的第一天以来的总秒数(小心这里!我们必须减去一个,因为计数指的是1月01日)。以秒为单位表示的结果总和最终转换为预期格式。
答案 0 :(得分:1)
通过使用Mac OS日期,我已成功运行:
date -j -f %s $(($(date -j 0101012015 +%s)+241*86400)) +%F
2015-08-30
date -j -f %s $(date -j -f %F 2015-01-01 +%s+241*86400 | bc) +%F
2015-08-30
其中,通过使用GNU date v8.13,我使用:
date -d "2005-1-1 +241 days" +%F
2005-08-30