首页 > 解决方案 > 如何使用 date-fns 复制函数

问题描述

我正在使用momentjs。使用它我创建了这个函数:

const convertToLocalTime = (userHour) => {
  return userHour + moment().set("hours", userHour).utcOffset() / 60;
}

console.log(convertToLocalTime(4))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

现在我想使用date-fns库复制这个函数,但我不知道如何做到这一点,无法在 date-fns 中找到替代方法。
如何使用 date-fns 复制上面使用 momentjs 的函数?

标签: javascript

解决方案


我不使用date-fns,但您不需要任何库。

这是使用 JavaScript 的内置Date对象的相同逻辑:

const convertToLocalTime = (userHour) => {
    const dt = new Date();
    dt.setHours(userHour);
    return userHour - dt.getTimezoneOffset() / 60;
};

console.log(convertToLocalTime(4));

请注意,MomentutcOffsetDate' 的getTimezoneOffset符号相反。

您可以使用另一种方法,因为 JavaScript 的Date对象同时具有本地和 UTC 日期/时间功能:

const convertToLocalTime = (userHour) => {
    const dt = new Date();
    dt.setUTCHours(userHour); // Set the hours using the UTC function
    return dt.getHours();     // Get the hours using the local time function
};

console.log(convertToLocalTime(4));


推荐阅读