对于 oData Rest 服务,我使用 Moment.js 从 Unix 时间戳创建日期,我想忽略时区。 我的日期是“2013-12-24”,在 Unix 秒中是 1387839600。
使用
moment("2013-12-24", "YYYY-MM-DD").toISOString()
结果为“2013-12-23T23:00:00.000Z”,因为我住在 GMT+1。 通过使用
moment.utc("2013-12-24", "YYYY-MM-DD").toISOString()
我得到“2013-12-24T00:00:00.000Z”,这正是我想要的。我可以简单地删除祖鲁时间末尾的“Z”。
但我的日期的真实表示是 Unix 时间戳。所以如果我这样做
moment.utc(1387839600, "X").toISOString()
我总是得到“2013-12-23T23:00:00.000Z”,但我希望它返回“2013-12-24T00:00:00.000Z”。
我错在哪里? 感谢您的帮助!
最佳答案
Unix 时间戳,无论是秒还是毫秒,总是为 UTC。值 1387839600
实际上是 2013 年 12 月 23 日晚上 11:00 UTC。您使用 sites like this one进行验证。
如果您希望时间为 2013 年 12 月 24 日午夜 UTC,则时间戳将为 1387843200
。
所以时刻表现正确。您应该专注于您的休息 API,并确保它正确发出 UTC 而不是本地时间值。
此外,如果您只需要日期部分,则不要使用 .toISOString
。相反,请使用 .format
,例如:
moment.utc(1387843200, 'X').format('YYYY-MM-DD')
关于javascript - 从忽略时区的 Unix 时间戳创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20700085/