7

为什么这段代码返回明天的日期?

它必须返回 2013-08-31 而不是 2013-09-01,因为我们是 8 月 31 日。

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_toisostring

function myFunction() {
  var d = new Date();
  var x = document.getElementById("demo");
  x.innerHTML = d.toISOString();
}
<p id="demo">Click the button to display the date and time as a string, using the ISO
  standard.</p>
<button onclick="myFunction()">Try it</button>

4

2 回答 2

4

它是UTC。

如果您想获取本地时区,则必须自己格式化日期(使用getYear() getMonth()等)或使用诸如date.js之类的库来为您格式化日期。

使用 date.js 非常简单:

(new Date()).format('yyyy-MM-dd')

编辑

正如@MattJohnson 所指出的, date.js 已被放弃,但您可以使用诸如moment.js 之类的替代方案。

于 2013-09-01T01:32:48.963 回答
3

利用:

new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

或者

(function() {

    function pad(number) {
      if (number < 10) {
        return '0' + number;
      }
      return number;
    }

    Date.prototype.toISO1String = function() {
      return this.getFullYear() +
        '-' + pad(this.getMonth() + 1) +
        '-' + pad(this.getDate()) +
        'T' + pad(this.getHours()) +
        ':' + pad(this.getMinutes()) +
        ':' + pad(this.getSeconds()) +
        '.' + (this.getMilliseconds() / 1000).toFixed(3).slice(2, 5) +
        'Z';
    };

  })();

请参阅:mozilla.org toISOString 文档

我刚刚修改了

于 2020-07-10T05:25:14.540 回答