Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Das Problem der Konvertierung einer JS-Zeichenfolge in einen Zeitstempel mit einer Differenz von 8 Stunden

var time = new Date('2014-07-00'); //Do 03.07.2014 08:00:00 (China Standard Time)
Date.parse(time); //1404345600000


var time = new Date('2014-7-3'); //Do 03.07.2014 00:00:00 (China Standard Time)
Date.parse(time); //1404316800000


Wie kommt es, dass es nach Abschluss von 0 noch 8 weitere Stunden gibt?

怪我咯怪我咯2687 Tage vor741

Antworte allen(3)Ich werde antworten

  • 黄舟

    黄舟2017-05-19 10:20:39

    根据 ECMA-262 ed 3,对时间的解析可能有不同处理方式。

    在 ES5 中,对 ISO 8601 格式的字符串,如果没有指定时区,则解析为 UTC,对非 ISO 8601 的处理没有统一行为。

    在 ES2015 中,对没有指定时区的字符串解析为当地时间(根据系统时间)。

    如果你希望把所有这种形式的字符串都处理为当地时间,可以自己写个函数:

    function parseISOLocal (s) {
      var b = s.split(/\D/);
      return new Date(b[0], b[1]-1, b[2]);
    }

    Antwort
    0
  • 某草草

    某草草2017-05-19 10:20:39

    前段时间也看到过这个问题。

    如果将日期格式换成“2014/07/02”,则正常换算成0点。

    参考:轩枫阁 http://www.xuanfengge.com/js-...

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-19 10:20:39

    在火狐下是正常的

    Antwort
    0
  • StornierenAntwort