(new Date('2012-12-01')).getMonth() === 10?
(new Date('2012-12-01')).getMonth() === 10?
(new Date('2012-12-01')).getMonth()
是10
而不是11
(getMonth
为0索引(。我已经在Firefox、Chrome和Node.js上测试过了。为什么会发生这种情况?
您遇到时区问题。JS引擎将字符串解释为UTC,因为没有进一步指定它。根据Date.parse
(new Date
使用(的规范:
根据字符串的内容,字符串可以被解释为本地时间、UTC时间或其他时区的时间。函数首先尝试根据日期-时间字符串格式(15.9.1.15(中调用的规则解析字符串的格式。如果字符串不符合该格式,则函数可能会返回到任何特定于实现的启发式方法或特定于实施的日期格式。
在您的时区中,日期时间是11月的Nov 30 2012 19:00:00 GMT-0500
。使用.getUTCMonth()
,您将获得十二月。但是,千万不要相信Date.parse
,每个浏览器的操作方式都不同。因此,如果您不在Node.js这样的受限环境中,那么您应该始终解析字符串(例如使用regex(并将其提供给new Date(Date.UTC(year, month, date, …))
。
至少在Firefox的情况下,RFC2822规定日期规范必须用折叠空白分隔。尝试(new Date('2012 12 01')).getMonth();
似乎未定义使用-
作为分隔符。
错误是由于在第01天前面加了0。不确定这是为什么,但如果你去掉1之前的0,它会给你一个合适的月份(11(。
此外,如果这意味着什么的话,它会在10月份开始给出错误的月份。
短期修复,使用1而不是01。
- 使用:new Image()控制加载html.src=html_URL
- 如何在不使用 new 关键字的情况下从函数创建对象
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- “createImageData()”和“new ImageData(()”有何不同
- 返回值+new Date()与Date.now()是否不同
- javascript getDate getMonth返回错误的月份
- new SharedWorker(“whatever.js”)返回一个错误
- new Datamap() 在调用之间保持内存的共享状态
- new XMLHttpRequest().responseType empty
- a=1和a=new Number()之间的差异
- JavaScript“new Date()”使用哪个时区
- JS new.target vs. instanceof
- 为什么(new RegExp(“w”)==/w/)在JS中为false
- JavaScript-使用B.prototype=new A()继承数组
- 为什么使用“new”创建一个Javascript数组被认为是不好的
- “new”关键字是在构造对象时自动设置“constructor”属性的唯一方法吗
- typeof new Function()总是“;函数”;
- new Date('2011-12-15 00:00:00') is showing up as NaN
- infobox.prototype=new google.maps.overlayview()错误,未定义google
- (new Date('2012-12-01')).getMonth() === 10?