我正在使用moment-timezone.js
,以便通过node.js将UTC时间转换为America/New_York
。我是这样做的:
var moment = require('moment-timezone');
moment.tz.add('America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0');
var now = new Date().toISOString();
now = moment(now).tz("America/New_York").toDate();
这似乎在我的本地机器上运行得很好,但当我在AWS Lambda上运行它时,now
时间仍然以协调世界时的形式输出。
我是不是做错了什么?我真的不想仅仅为了获取准确的纽约时间而使用API。夏令时是这里最大的挑战。谢谢!
发布于 2016-02-16 15:50:09
我解决这个问题的方法是:
var now = ((moment(Date.now()).utcOffset('-0500').format('x'));
//Parse it into native JS object:
now = new Date(parseInt(now));
不过,我想指出一些东西,我希望这能节省一些人的时间,这让我背上了沉重的负担。我的主要问题是Amazon Lambda提供UTC时间,无论我在做什么。此问题的修复方法是只需设置Node TZ环境变量:
process.env.TZ = 'America/New_York';
发布于 2018-06-28 06:02:48
首先,使用timezone-with-data.js
或specifically only load the timezones you need安装moment timezone并安装所有时区
如果您有一个已知为UTC格式的日期,并且希望将其转换为东部时间,请使用moment.utc()
函数实际解析UTC日期字符串。然后,当你对它调用.tz()
时,它将正确地转换为:
moment.utc(date_string).tz("America/New_York")
如果您只是简单地执行moment(date_string).tz("America/New_York")
,那么默认情况下,时间将按照您的本地时区进行解析,并且不会调整日期。
发布于 2020-02-09 15:28:12
东部标准时间(EST)比协调世界时(UTC)晚5小时。
使用moment.js,您可以从协调世界时的时区中减去5小时。
moment.utc().subtract(5, 'hours').format("YYYY-MM-DD HH:mm:ss.SSS")
或
如果您愿意添加另一个库,如moment-timezone
。您可以只使用:
moment().tz("America/New_York").format("YYYY-MM-DD HH:mm:ss.SSS")
https://stackoverflow.com/questions/35378831
复制相似问题