我正在开发一个需要从数据库中检索和存储时间戳的脚本。来自数据库的时间戳被检索为UTC Zulu格式化字符串" YYYY-MM-DDTHH:MM:SS.SSSZ"。我希望将此时间戳存储为" YYYY-MM-DDTHH:MM:SS.SSS"在当地时间。我目前正试图用moment.js做这件事,我在" .toISOString()"上取得了一点成功。和其他方法。
但是,我注意到"时刻(时间戳)输出.format()"不会返回我期望从目前为止我所理解的关于UTC的字符串。这是一个复制我的问题的代码示例:
currentURL.contains("https://www.tourismpei.com/")
这是我的输出:
var moment = require('moment');
var timestamp = new Date('2018-05-30T15:01:01.111Z');
console.log(timestamp);
console.log(moment(timestamp).format('YYYY-MM-DDTHH:mm:ss.sss'));
console.log(moment(timestamp).format('YYYY-MM-DDTHH:MM:SS.SSS'));
这是我预料到的:
2018-05-30T15:01:01.111Z
2018-05-30T16:01:01.011
2018-05-30T16:05:11.111
为什么来自' YYYY-MM-DDTHH:mm:ss.sss'到&YYYY-MM-DDTHH:MM:SS.SSS'在.format()中导致不同的输出?我的预期输出是正确的还是有误解的时刻。(时间戳).format()?最后,考虑到这种情况,有没有更好的方法来实现我的预期输出?
答案 0 :(得分:3)
MM是几个月,这就是为什么你得到2018-05-30T16:05:11.111
5
没有sss
,但有SSS
你说你想要这种格式“YYY-MM-DDTHH:MM:SS.SSS”我假设MM你的意思是分钟,因为你的预期结果。这是一种奇怪的方式来存储日期,因为没有几个月,而且重复几秒钟。
我建议以UTC格式存储。
var timestamp = new Date('2018-05-30T15:01:01.111Z');
console.log(timestamp);
console.log(moment(timestamp).format('YYYY-MM-DDTHH:mm:ss:SSS'));
// i'd suggest UTC over formating but if you were i'd use
console.log(moment(timestamp).format('YYYY-MM-DDTHH:MM:mm:SSS'));
//2018-05-30T15:01:01.111Z
//2018-05-30T16:01:01.111
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>
如果你想要它,请告诉我。