如何将UTC DateTime转换为没有DST的本地时间戳记

问题描述 投票:0回答:1

我们有一个存储时间戳的应用程序,用于记录时间表(即10/03/2019 0800)。该时间戳记以UTC时间保存到数据库中。使用日期戳时,我们会将其转换为本地时间。当夏令时到来时,我们将转换日期,这似乎是一个小时的时间。有没有一种方法可以始终将UTC DateTime转换为本地时间戳而不涉及夏令时?

     var convertToLocalDateTimeStamp = function (datetime) {
        // ignore param for now
        var d = new Date("2019-01-01T08:00:00"); // UTC saved time

        var newDate = new Date(d.getTime() + d.getTimezoneOffset() * 60 * 1000);

        var offset = d.getTimezoneOffset() / 60;
        var hours = d.getHours();

        newDate.setHours(hours - offset);

        // should be 3pm central time, but appearing as 2pm due to daylight savings

        return newDate;
    };
javascript
1个回答
0
投票

我刚刚使用JS小提琴尝试了您的代码,以检查getTimezoneOffset是否根据给定的日期/时间(而不是当前日期/时间)计算时区偏移,并且成功。我能够同时运行标准时间和夏令时。检查系统设置的时区和时区,确保正确。在另一个本地系统上尝试此代码。与您的本地设置有关。

对于第二个问题,您是对的,将实际日期/时间调整为偏移量以查看本地时间不是一个好习惯。有关详情,请参见How to initialize a JavaScript Date to a particular time zone

© www.soinside.com 2019 - 2024. All rights reserved.