new Date() broken on Chrome 67

前端 未结 2 1389
感动是毒
感动是毒 2020-12-11 09:07

Starting Chrome 67 (full version is 67.0.3396.87), I am experiencing weird behaviour with creation of a new Date object. Smallest reproducible case, goes something like:

相关标签:
2条回答
  • 2020-12-11 09:35

    Depending on the response to that bug report, I think this is actually due to Chrome possibly including IANA timezone information. Browsers, time zones, Chrome 67 Error

    For example, when I run that fiddle, I get Sun Dec 31 0000 18:09:24 GMT-0550 (Central Standard Time) which corresponds to the IANA entry Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24.

    So this is a "feature" not a bug I think. They are using the more "accurate" historical time offsets instead of current day time offsets for historical dates.

    You can view the data here : https://github.com/eggert/tz just look for your appropriate world location file and try and avoid all the commented out lines unless you are morbidly curious about the history of your time zones.

    What you can do to "fix" it so it display more or less correctly is to call .toUTCString() on the Date object which will force it to UTC time and display Mon, 01 Jan 0001 00:00:00 GMT as @Pointy pointed out in the comments on the initial question.

    0 讨论(0)
  • 2020-12-11 09:43

    Your code, as long as MS's one, doesn't know anything about the timezone, so I assume Chrome takes the default one.

    I guess it should be better if you create your date as below:

    const date = new Date(Date.UTC(year, month, day, hour, minute, second));

    0 讨论(0)
提交回复
热议问题