UTC时刻,date-fns有类似的东西吗?

Posted

技术标签:

【中文标题】UTC时刻,date-fns有类似的东西吗?【英文标题】:moment utc, does date-fns have something similar? 【发布时间】:2019-03-20 21:09:36 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于UTC时刻,date-fns有类似的东西吗?的主要内容,如果未能解决你的问题,请参考以下文章

date-fns 将 UTC 转换为时区

时刻 vs date-fns 语言环境日期格式

时刻 Js UTC 到本地时间

使用 date-fns 格式化持续时间(从 seconds 开始)

使用时刻将对象中的本地时间转换为UTC

在没有 DST 的情况下将时间保存为 UTC(时刻)