在 OS X 中从 YYYYJJJ 转换日期?

在 OS X 中从 YYYYJJJ 转换日期?

我有一个 bash 脚本,它接受包含年月日(儒略日)的日期字符串并将其转换为另一种格式。格式%j字符没有像文档中预期的那样解析字符串(man dateman 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 中修复。

相关内容