我想根据用户的时区将UTC ISO 8601日期字符串转换为用户的本地日期时间.我使用Moment-TimeZone来完成这项任务,下面是代码片段:

const userTimezone = moment.tz.guess();
const time = moment.utc("2023-03-08T16:35:21.453")
                   .tz(userTimezone)
                   .format("MM/DD/YYYY h:mm A")

Does Moment Timezone consider the DST rules of the selected time zone and apply the appropriate DST offset to the formatted time?

如果我的日期字符串在DST范围内,那么它会在格式化时自动调整DST偏移量,还是我们必须手动调整DST偏移量?

推荐答案

时刻时区会考虑所选时区的DST(夏令时)规则,并将适当的DST偏移量应用于格式化的时间.当您将tz()函数与Moment TimeZone一起使用时,它会考虑时区的DST规则,并相应地调整时间.

在您的代码片段中,当您调用moment.utc("2023-03-08T16:35:21.453")时,您指定的是UTC时间.然后,通过链接.tz(userTimezone),您可以根据用户的时区将该UTC时间转换为用户的本地时间,包括任何适用的DST调整.

因此,当您使用.format("MM/DD/YYYY h:mm A")格式化时间时,如果DST对用户时区中的特定日期和时间有效,则生成的格式化时间将已经包括DST偏移量.您不需要手动调整DST偏移.

Moment TimeZone处理不同时区的DST规则,因此只要您提供正确的时区标识符(代码中为userTimezone),它就会自动为您处理DST偏移量.

Javascript相关问答推荐

CSS背景过滤器忽略转换持续时间(ReactJS)

导入图像与内联包含它们NextJS

错误:找不到react-redux上下文值;请确保该组件包装在React原生Expo应用程序中的提供者中

单击按钮后未清除 Select

如何避免使用ajax在Vue 3合成API中重定向

如何按预期聚合SON数据?

ReactJS中的material UI自动完成类别

React:未调用useState变量在调试器的事件处理程序中不可用

是否有方法在OpenWeatherMap API中获取过go 的降水数据?

使用下表中所示的值初始化一个二维数组

如何在Connect 4游戏中 for each 玩家使用位板寻找7形状?

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

如何解决useState错误—setSelect Image不是函数''

Chart.js-显示值应该在其中的引用区域

React.Development.js和未捕获的ReferenceError:未定义useState

覆盖加载器页面避免对页面上的元素进行操作

在JS中动态创建对象,并将其追加到HTML表中

第一项杀死下一项,直到数组长度在javascript中等于1