正在读取UTC时间字符串

Reading UTC time strings

本文关键字:时间 字符串 UTC 读取      更新时间:2023-09-26

嗨,我正在尝试使用moments.js.读取一些UTC数据字符串

例如

date1 = moment.utc("160114224512Z").format('YYYY-MM-DD HH:mm:ss');
console.log(date1)

然而,这总是抛出一个无效的日期错误

如果指定xX令牌,则Moment将接受以秒和毫秒为单位的unix时间戳作为字符串。实际上,您甚至不需要去掉Z——与xX标记相关的正则表达式正在查找一个数字,因此默认情况下它将忽略Z。

我认为您有毫秒,所以您将使用小型x令牌,如下所示:

moment.utc("160114224512Z", 'x').format('YYYY-MM-DD HH:mm:ss');
"1975-01-28 04:10:24"

看起来对吗?

另外需要注意的是,为了清晰起见,去掉Z可能是很好的,即使你不必这样做。

我假设您有未显示的报价,例如:

date1 = moment.utc("160114224512Z").format('YYYY-MM-DD HH:mm:ss');
// Note -----------^-------------^
console.log(date1)

问题很简单:这不是我见过的任何格式的有效日期/时间字符串。例如,它肯定不是ISO-8601。

自1975年1月28日的Epoch值以来,它看起来像是一秒钟,因为它只是一个数字,而且它太大了,自Epoch以来不可能是毫秒(除非你真的有7043年的日期)。

如果距离epoch还有几秒,则放弃Z并将其用作数字:

date1 = moment.utc(160114224512).format('YYYY-MM-DD HH:mm:ss');
字符串160114224512Z不是有效的UTC矩格式,也不是有效的矩格式。

我建议你指定你的输入格式,我会这样做:

moment.utc(160114224512, 'x').format('YYYY-MM-DD HH:mm:ss')