我目前正在重构使用时刻作为日期的大型代码库。 许多地方的日期都像这样:moment.utc()
我似乎在date-fns中找不到类似的东西?有谁知道我如何在date-fns中获得相同的功能?还是纯香草?
只需与moment.utc()相同
答案 0 :(得分:4)
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或本地时间。