如何在moment.js中将表示时间点的日期对象转换为表示时间部分为零的日期对象



我需要以格式2021-11-21T00:00:00+00:00表示日期,但我得到的是2021-11-21T00:00:00+05:30。请帮我解决这个问题

moment('2021-11-21').format(); //2021-11-21T00:00:00+05:30

我在Golang中处理日期和生日时遇到了类似的问题,但我想说,这也适用于Javascript。您不应该尝试在此任务中使用日期对象,因为当客户端浏览器设置为不同的时区时,您永远无法完全依赖该对象。最后我自己创建了一个date对象,它只包含3个整数,分别代表日、月、年。通过这样做,你可以确保时间根本不起作用。

顺便说一下,这可能也会引起其他人的兴趣:我做了一些关于如何处理出生日期的研究,因为当你想到它时,你的生日实际上是一个时间点,所以你的生日可能会改变为前一天或第二天,如果你从一个地方的角度来看。我发现出生日期(或"一般日期")不被视为时间或日期时间,只有年、月和日是重要的,它们总是相同的,无论你出生在哪里/时区,也无论客户生活在哪个时区。

不使用moment,您可以使用moment-timezone并将其设置为GMT-0。

var moment = require("moment-timezone");
const time = moment().tz("Etc/GMT").format();
console.log(time);

结果类似于

2021-10-26T11:39:15Z 

所以我认为你不能这样做(除了手动删除'Z'并添加+00:00)部分作为一个额外的字符串。

所有日期都以您的系统本地时区表示。这意味着moment('2021-11-21')是您所在时区的11月21日午夜(2021-11-21 00:00:00+05:30)。如果我运行完全相同的方法,那么它将是我的本地时区(20121-11-21t00:00:00-06:00)。如果你需要它在一个特定的时区,或者在GMT,那么你可能需要使用moment-timezone并将日期转换为该时区。

moment('2021-11-21').startOf('day').format()

最新更新