Bash脚本和JavaScript之间的JSON日期时间

3
在与此处讨论相同的精神下,是否有推荐的方法可以在bash脚本中生成/解析日期,以便可以与Javascript Date进行交互?
确切地说,当对Javascript日期对象进行json编码时,我会得到这些字符串:
2011-10-31T10:23:47.278Z

我可以组合一段bash脚本来生成/解析该日期格式,但我更愿意避免重复造轮子。有人有可行的解决方案吗?
我更关心“生成”这一方面:我想从一个bash脚本中生成当前日期并将其保存在一个json文档(couchdb)中,以便它们可以被视图引擎自动排序。
2个回答

11
我最接近的翻译是这样的:

我目前能够做到的是这个:


date -u +"%FT%T.000Z"

这将产生以下输出:
2011-11-03T06:43:08.000Z

我不喜欢手动将TZ和毫秒数设置为0(虽然我可以使用%N获取纳秒级别的时间,然后通过sed或其他方式进行截断,但这似乎有些过于复杂,只是为了获得毫秒级别的精度),我希望内置的date格式化标记可以直接生成UTC日期。我错误地认为这种格式很常见,可能只需要一个格式标记就可以指定。


5
你可以使用以下命令获取实际的纳秒值(在CentOS 6.4上测试通过):date -u +"%FT%T.%3NZ"该命令会将当前的纳秒值截取到三位字符并追加到时间后面。以下是一些示例输出:2015-05-11T19:18:54.021Z - Dylan Northrup

1

JavaScript可以将许多不同的值转换为日期。不确定这是否是您的意思,但例如,您的bash可以生成此字符串:“2011/11/10 08:08:08”

当它到达JavaScript时,您可以执行以下操作

var date = new Date("2011/11/10 08:08:08")

你也可以这样做:

var now = 1320287813362
var date = new Date(now)

有关Date对象接受的更多信息,请参见此处: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

其他有趣的信息在这里: 在CouchDB中存储日期时间戳的最佳方法是什么?


我知道你提出的格式“2011/11/10 08:08:08”易于生成并可排序。但说实话,我不确定这个格式是否涵盖了所有情况(夏令时/冬令时,时区等)。我真的更喜欢使用格式“2011-10-31T10:23:47.278Z”,这让我感到安心。我提出这个问题的原因是我想使用预先存在的格式字符串来date(或类似工具),以便我不必在这里重新发明轮子。 - blueFast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接