我的后端服务器使用python存储utc时间戳并将其发送到前端。
from datetime import datetime
utcTs = datetime.utcnow().timestamp()
然后前端应用程序(node.js)获取utcTs,将其转换为区域设置时间(或自定义时区)
我的代码如下:
moment.unix(utcTs).add(8,'hour').format()
因为utcTs是一个utc + 0时间戳,我如何将一个时刻对象初始化为utc + 0,这样我就可以轻松地将它转换为其他时区。
例如,我的语言环境是utc + 8。
moment.tz(utcTs,'Asia/Shanghai').format()
返回错误的时间。
有什么温和的方式吗?谢谢
从Python的timestamp()
方法返回的时间戳是基于Unix纪元的基于UTC的秒数,所以你只需要在Moment中做同样的事情。
// this is in seconds, but creates a moment in local mode
moment.unix(utcTs).add(8,'hour').format()
// you need to get it in UTC mode with the .utc(). Adding gives a moment 8 hours later.
moment.unix(utcTs).utc().add(8,'hour').format()
// this is how you get it in a fixed offset instead of adding
moment.unix(utcTs).utcOffset('+08:00').format()
由于并非所有时区都可以使用固定偏移,因此以下是更好的方法。
// this is incorrect, as the input would interpreted as milliseconds
moment.tz(utcTs,'Asia/Shanghai').format()
// this is the correct way for it interpreted in terms of seconds
moment.unix(utcTs).tz('Asia/Shanghai').format()