【问题标题】:Problems with the date 20 October in some years某些年份 10 月 20 日的问题
【发布时间】:2013-05-22 18:07:15
【问题描述】:

我用 Javascript 编写了一些可以正常工作的代码。 但是当我输入日期October 20, 2013 时,我返回了日期October 19, 2013

这同样适用于201920242030 年份(未经测试 前几年,而不是以后)。

我测试的所有浏览器(Google ChromeInternet ExplorerMozilla FirefoxOpera i>Safari)。

当我写作时:

date = new Date("10/20/2013");
document.write(date);

我得到的结果是:

2013 年 10 月 19 日星期六 23:00:00 GMT-0300 (BRT)


有人可以告诉我为什么会这样,我该如何解决这个问题?

【问题讨论】:

  • 在最新的 Chrome 中对我来说工作正常,输出 10 月 20 日,如预期的那样? -> Fiddle
  • 也许是你的时区...
  • 这里也正常工作。

标签: javascript date


【解决方案1】:

2013 年 10 月 20 日是 BRST 的切换日期。因此,如果您在巴西(在 BRST 时区),您将从 BRT (UTC -3) 过渡到 BRST (UTC-2)。

来自TimeAndDate.com

圣保罗当前时间:2013 年 5 月 22 日星期三下午 3:19:14 BRT

圣保罗将继续使用 BRT,直到 2013 年 10 月 20 日星期日 BRST

过渡发生在午夜和午夜到凌晨 1 点被跳过。为保证该日期的时间,您可以尝试:

date = new Date("10/20/2013 01:00:00");

你应该得到 10/20/2013 01:00:00 并带有 BRST 作为时区名称。

对于希望查看此问题的美国时区参与 DST 的人;使用 2013 年 3 月 10 日的美国夏令时转换点,将凌晨 2 点提前到凌晨 3 点:

var d = new Date("03/10/2013 02:59:59")
alert(d);   // Returns 1:59:59 AM in the Standard Time Zone

var d = new Date("03/10/2013 03:00:00")
alert(d);   // Returns 3:00:00 AM in the Daylight Time Zone

【讨论】:

  • 更多关于日期有时间变化的JS问题stackoverflow.com/questions/14839244/…
  • 这解释了为什么只在某些年份,即日期落在星期天!约翰抓得好。
  • 太棒了!谷歌浏览器将您的日期恢复为 1 小时,但 Safari 保留更改为 BRST。
【解决方案2】:

某些浏览器在使用 Date.parse 时可能会显示不正确的值(与 'new Date(string)' 相同)。我不知道原因,但创建日期的最佳方法是使用 Date(year, month, day) constructor.

例子:

console.log(new Date(2013, 10, 20))

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 2022-01-13
    • 2019-06-15
    • 2020-03-20
    • 2019-02-15
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多