我有一个 bash 脚本,它接受包含年月日(儒略日)的日期字符串并将其转换为另一种格式。格式%j
字符没有像文档中预期的那样解析字符串(man date
和man strftime
)。例如,当我执行以下操作时:
date -j -f "%Y %j %H %M %S" "2013 2 12 34 56" "+%a %b %d %T %Z %Y"
我得到:
Sat Mar 09 12:34:56 UTC 2013
为什么显示今天的日期 ( Sat March 09
)?难道不应该显示Wed Jan 02
(2013 年第 2 天) 吗?
它似乎可以很好地与其他格式配合使用。例如:
date -j -f "%Y %m %d %H %M %S" "2013 01 02 12 34 56" "+%a %b %d %T %Z %Y"
正确给出Wed Jan 02 12:34:56 UTC 2013
。
发生了什么?我使用的%j
角色正确吗?我在 OS 10.10 Yosemite 和 10.11 El Capitan 上得到的结果相同。
答案1
这是一个错误。/bin/date
的“%j”(年份)选择器已损坏(至少在 OS X 10.10 和 10.11 中)。我已向 Apple 提交了一份错误报告(#30975711)。
编辑:似乎已在 OS X 10.12 Sierra 中修复。