javascript date getYear()在IE和Firefox之间返回不同的结果,如何解决这个问题?
javascript date getYear() returns different result between IE and Firefox, how to approach this?
显然javascript日期对象的方法getYear()在IE8和Firefox3.6之间返回不同的结果(我在我的机器上有那些2,不确定其他浏览器或版本)
Date d = new Date();
alert(d.getYear());
FF3.6 ==> 111 (year since 1900? i guess)
IE8 ===> 2011
我一直只在Firefox上测试,现在我的Javascript代码调整getYear()的返回值现在给我3911,因为我的编码。
var modified = d.getYear() + 1900
Firefox返回2011。但是如果我在IE8上应用这种方法,它返回3911。
我可以添加逻辑来区分IE和Firefox,但我不想在我的代码中到处添加这样的if/else,只要有这样的浏览器依赖部分。有别的方法可以解决这个问题吗?
var browserName=navigator.appName;
if (browserName=="Netscape") {
var modified = d.getYear() + 1900
}
else if(browserName=="Microsoft Internet Explorer") {
var modified = d.getYear();
}
用getFullYear()
代替getYear()
尝试使用getFullYear()代替getYear
如果IE8给出的是2011,这是IE8 (以及更早的版本,见下面的更新)的一个bug。getYear
在规范(章节B.2.4)中定义为:
- 设t为此时间值。
- 如果t为
NaN
,返回NaN
。 - 返回
YearFromTime(LocalTime(t)) − 1900
.
因此,现在111是正确的值。这个定义从第三版开始就没有变化,所以我们谈论的是大约12年的特定行为。
正如其他人所说,使用getFullYear
来获得更有用的值,但这是一个IE8的bug ,如果它真的像你说的那样(我没有IE8方便检查)。
更新:好吧,我会的。只是尝试了一下,Microsoft 把弄错了。IE6、IE7和IE8都显示"2011"。好消息是他们终于解决了这个问题,IE9应该显示"111"。您可以在浏览器中试试:http://jsbin.com/ofuyi3
在没有必要的时候不要依赖产品版本。相反,依靠你想要的差异来纠正自己。如果您想要getYear
的正确值,您可以使用
Date d = new Date();
var year = d.getYear();
if (year < 1900) { // Should always be true, but isn't in older IE.
year += 1900;
}
我意识到人们提出了更好的方法来获得结果,但我认为实际的问题值得回答。
使用date.getFullYear();
等等. .
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何解决Yii中的页面刷新问题
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 测试Angular Service解决错误回调中的promise
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 有没有一个简单的解决方案可以根据3个数据找到结果
- 了解两个代码解决方案之间的结果差异
- 使用'解决'以等待routeProvider中的查询结果
- QUnit:任何不在网站DOM树中输出结果的官方解决方案
- Javascript数学给出了不正确的结果,我该如何解决这个问题
- 获取插入符号位置的常见解决方案会返回奇怪的结果
- 在为字符串创建自定义regex-camelCase解决方案时,Javascript错误的结果
- JQuery$.getJSON异步解决方案-缓存ajax结果
- javascript date getYear()在IE和Firefox之间返回不同的结果,如何解决这个问题?