gpt4 book ai didi

Javascript:将字符串解析为日期作为本地时区

转载 作者:行者123 更新时间:2023-12-03 17:06:33 25 4
gpt4 key购买 nike

我有一个代表当前时间的字符串:2015-11-24T19:40:00 .如何在 Javascript 中解析此字符串以获取由此字符串表示为 的日期本地时间 ? 由于某些限制,我无法使用库 moment ,但允许使用 jquery。我知道之前有人问过这个问题,但答案使用了moment

例如,如果我在加利福尼亚运行脚本,那么这个字符串将代表太平洋时间晚上 7 点,但如果我在纽约运行脚本,那么这个字符串将代表东部时间?

我尝试了以下方法,但 Chrome 和 Firefox 给了我不同的结果:

var str = "2015-11-24T19:40:00";
var date = new Date(str);

Chrome 使用它作为 UTC 时间 ( Tue Nov 24 2015 11:40:00 GMT-0800 (Pacific Standard Time) ),

但 Firefox 将它作为我的本地使用 太平洋 时间 ( Tue Nov 24 2015 19:40:00 GMT-0800 (Pacific Standard Time) )

我尝试将“Z”添加到 str ,像这样 var date = new Date(str+"Z"); ,然后两个浏览器都给我 UTC 时间。有没有类似的信给 "Z"它告诉所有浏览器(至少是 chrome、Firefox 和 Safari)将字符串解析为本地时区?

最佳答案

强烈建议不要使用 Date 构造函数或 Date.parse(本质上是相同的)解析日期字符串。

如果将 Date 作为函数调用并传递不带时区的 ISO 8601 格式日期字符串(例如 2015-11-24T19:40:00),您可能会得到以下结果之一:

  • ES5 之前的实现可能会将其视为任何东西,甚至是 NaN(例如 IE 8)
  • 符合 ES5 的实现会将其视为 UTC 时区
  • 符合 ECMAScript 2015 的实现会将其视为本地(与 ISO 8601 一致)

  • Date 对象有一个 UTC 时间值和一个基于系统设置的偏移量。当你发送一个 Date 到输出时,你看到的通常是 Date.prototype.toString 的结果,它是一个依赖于实现的、人类可读的表示日期和时间的字符串,通常在基于系统设置的时区中。

    解析日期字符串的最佳方法是手动进行。如果您确定格式一致且有效,那么将 ISO 格式字符串解析为本地日期就非常简单:

    /*  @param {string} s - an ISO 8001 format date and time string
    ** with all components, e.g. 2015-11-24T19:40:00
    ** @returns {Date} - Date instance from parsing the string. May be NaN.
    */
    function parseISOLocal(s) {
    var b = s.split(/\D/);
    return new Date(b[0], b[1]-1, b[2], b[3], b[4], b[5]);
    }

    document.write(parseISOLocal('2015-11-24T19:40:00'));


    请注意,使用 Date.parse 解析 ISO 字符串仅接受 UTC,它不接受任何其他时区指定(如果缺少,请注意上述行为)。

    关于Javascript:将字符串解析为日期作为本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642132/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com