在Moment.js中设置输入时区

4

我的网站上有一个输入框,我的时区是UTC+2小时:

var startDate = "01/01/2019"
result = moment(startDate).utc().format();
alert(result);

这将返回2018-12-31T23:00:00+00:00,但我需要的API是2019-01-01T00:00:00+00:00(UTC时区当月第一天),所以我需要更多或更少地设置输入时区为UTC。有没有办法用Moment.js实现这一点?(否则我当然可以手动完成整个过程)
2个回答

3

你可以使用moment timezone

你可以将默认时区设置为UTC ref

默认情况下,moment对象是在本地时区创建的。 本地时区 - 是在浏览器或node.js服务器上设置的时区。

要更改默认时区,请使用moment.tz.setDefault并提供有效的时区。

moment.tz.setDefault("America/New_York");

或者

当解析日期时,您可以明确设置时区:

m = moment.tz("2013-11-18 11:55", "Europe/Berlin");

然后根据您需要的时区进行转换,例如:

m.tz("UTC");

希望这能有所帮助 :)

这仍意味着输入设置为时区而不是UTC,因此如果我将其设置为伦敦,则在冬季它将是UTC,但在夏季仍然是+1小时。 - solaire
如果你在谈论夏令时,你可以使用isDST()来检查时间是否为DSTShifted。这是你要找的吗? - Madhan Varadhodiyil
也可以先这样做,然后手动调整。但我发现另一种直接完成的方法(请参见其他答案)。 - solaire

2
这似乎给了我正确的结果:
var startDate = "01/01/2019"
result = moment.utc(startDate, "DD-MM-YYYY").format();
alert(result);
//2019-01-01T00:00:00+00:00

1
UTC 函数的第二个参数似乎有点问题。 - Abdulbosid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接