Javascript getFullYear()返回错误的年份

Pat*_*ick 2 javascript

这是如此基本,但对我来说没有意义:

new Date("2010-01-01").getFullYear();
Run Code Online (Sandbox Code Playgroud)

结果:2009年

问心无愧?我的目标是将格式重新格式化为mm/dd/yyyy,格式为yyyy-mm-dd ..

添加:

new Date("2010-01-01").getMonth();
Run Code Online (Sandbox Code Playgroud)

结果:11

new Date("2010-01-01").getDate();
Run Code Online (Sandbox Code Playgroud)

结果:31

S M*_*han 5

您传入的日期字符串new Date()中没有时区.它被解释为UTC.这里要理解的关键是将Date存储为Unix时间戳(自1970-01-01 00:00以来的秒数,使'Date'成为误导性名称),所以如果你没有指定日期内的时间,那就是要应用默认值.

Date.prototype.getFullYear()在LOCAL时间内检索该时间戳的全年.(请参阅此处的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear)

您在UTC以西的某个地方,2010-01-01 UTC是您当地时间的2009-12-31.

而对于你的最后一个谜... .getMonth()是基于0,而不是基于1,所以'11'是12月.