12

我目前正在重构一个使用时刻作为日期的大型代码库。有很多地方的日期是这样的:moment.utc()

我似乎在 date-fns 中找不到类似的东西?有谁知道我如何在 date-fns 中获得相同的功能?或者只是普通的香草?

只需与 moment.utc() 匹配即可

4

1 回答 1

23

Moment.js 库提供的对象具有“模式”的概念。对象可以moment处于本地模式、UTC 模式或固定到特定时区偏移。它也可以通过 moment-timezone 附加库属于一个命名的时区。当您调用 时moment.utc(),您将时刻对象设置为 UTC 模式。

DateDate-fns 是一个优秀的库,它提供了与 JavaScript 语言(在 ECMAScript 标准中)提供的标准对象一起使用的辅助函数。因此,它的功能仅限于您可以对Date对象执行的操作。

Date对象没有那个时刻那样的模式。因此,您不能Date使用 Date-fns 或任何其他 vanilla js 技术将对象切换到 UTC 模式。

Date对象始终在内部跟踪 UTC 时间点,并且它公开了一些采用 UTC 时间的函数和参数,以及其他采用本地时间的函数和参数。任何使用本地时间的都在函数调用时转换/转换为 UTC。换句话说,如果您调用new Date(year, month, day, hour, minute, second),这些值是本地时间的,它们会立即转换为 UTC。您可以随时通过调用.getTime()或获取内部值.valueOf()。如果您想要更常见的表示,.toISOString()是一个不错的选择。

总之:您不能将Date对象转换为 UTC,因为它已经是 UTC。您只能根据您调用的函数请求 UTC 或本地时间输出。

于 2018-10-16T16:43:29.033 回答