ASP程序中调用JavaScript中getYear()方法显示时间浏览器兼容显示错误问题
2014-02-17 18:25
543 查看
最近帮朋友修改网站,发现以前写的使用getYear()获取年份的代码(见下面),在IE浏览器中运行显示正常,但是到非IE浏览器(不是Trident内核)中就显示不正常了(Chrome浏览器Webkit内核,火狐浏览器Gecko内核),例如2014年显示成114年。
看来是Chrome浏览器和IE浏览器的对getYear函数的实现不同。将其修改成getFullYear即可解决问题。
下面总结下getYear、getFullYear和getUTCFullYear的不同点:
getYear、getFullYear、getUTCFullYear都是Javascript的Date对象的方法函数。其中getYear()方法出生较早,在早期也一直使用OK,可是在2000年后这个方法问题多多,因为在Firefox和Safari等浏览器上,getYear始终返回年份与1900 年之间的差,比如1998年返回98,而2009年则会显示109,如果大家都这么处理也好,要加一起加,微软自己在IE浏览器中把getYear给修正了,可Firefox(最新版本也没修正这个问题)还蒙在鼓里,仍老老实实的按照原有规则解析getYear,本来都可以指望用户自行修正,这样一来都没得用,于是getFullYear、getUTCFullYear就出生了。
1、getYear()函数
使用getYear()方法可返回两位或四位数的年份,用getYear()返回的数并不一定是4位的!处于1900年和1999年间的getYear()方法返回的只有两位数。在此之前的或是在此之后的年份返回的都是四位数的,比如2009年,Javascript解析器应该是返回2009的,而浏览器则计算返回109。这应该是早期的约定,而IE埋头改掉了。该函数已经被逐渐废弃并不推荐使用。
<script type="text/javascript">
var d = new Date();
document.write(d.getYear());//IE输出2009,FIREFOX输出109
</script>
2、getFullYea()函数
getFullYear函数则不存在此问题。getFullYear()方法可返回一个四位数年份,这样大家(IE和FIREFOX等)都不需要运算,直接把解析值输出来即可。
<script type="text/javascript">
var d = new Date();
document.write(d.getFullYear());//IE输出2009,FIREFOX输出2009
</script>
3、getUTCFullYear()函数
getUTCFullYear()函数则是根据UTC时间返回了四位数来代表年份。与getFullYear()方法理论角度是完全不同,虽然在大部分的时间里输出是相同的,但是假如当天日期是12月31日或1月1日,则getUTCFullYear() 返回值与getFullYear()返回值就有可能不同,具体取决于当地时区和UTC通用时间之间的关系,也就是差值。
<script type="text/javascript">
var d = new Date();
document.write(d.getUTCFullYear());//IE输出2009,FIREFOX输出2009
</script>
比如在中国大陆、、香港、澳门、蒙古国、台湾、新加坡、马来西亚、菲律宾等地区的本地时间比UTC快8小时,记作UTC+8,意思就是比UTC时间快8小时。减的类似理解,比如UTC-10等。
<script language="JavaScript" type="text/javascript"> today=new Date(); function initArray(){ this.length=initArray.arguments.length for(var i=0;i<this.length;i++) this[i+1]=initArray.arguments[i] } var d=new initArray( "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"); document.write( "<font color=#666666 style='font-size:9pt;font-family: 宋体'> ", today.getYear(),"年", today.getMonth()+1,"月", today.getDate(),"日", d[today.getDay()+1], "</font>" ); </script>
看来是Chrome浏览器和IE浏览器的对getYear函数的实现不同。将其修改成getFullYear即可解决问题。
下面总结下getYear、getFullYear和getUTCFullYear的不同点:
getYear、getFullYear、getUTCFullYear都是Javascript的Date对象的方法函数。其中getYear()方法出生较早,在早期也一直使用OK,可是在2000年后这个方法问题多多,因为在Firefox和Safari等浏览器上,getYear始终返回年份与1900 年之间的差,比如1998年返回98,而2009年则会显示109,如果大家都这么处理也好,要加一起加,微软自己在IE浏览器中把getYear给修正了,可Firefox(最新版本也没修正这个问题)还蒙在鼓里,仍老老实实的按照原有规则解析getYear,本来都可以指望用户自行修正,这样一来都没得用,于是getFullYear、getUTCFullYear就出生了。
1、getYear()函数
使用getYear()方法可返回两位或四位数的年份,用getYear()返回的数并不一定是4位的!处于1900年和1999年间的getYear()方法返回的只有两位数。在此之前的或是在此之后的年份返回的都是四位数的,比如2009年,Javascript解析器应该是返回2009的,而浏览器则计算返回109。这应该是早期的约定,而IE埋头改掉了。该函数已经被逐渐废弃并不推荐使用。
<script type="text/javascript">
var d = new Date();
document.write(d.getYear());//IE输出2009,FIREFOX输出109
</script>
2、getFullYea()函数
getFullYear函数则不存在此问题。getFullYear()方法可返回一个四位数年份,这样大家(IE和FIREFOX等)都不需要运算,直接把解析值输出来即可。
<script type="text/javascript">
var d = new Date();
document.write(d.getFullYear());//IE输出2009,FIREFOX输出2009
</script>
3、getUTCFullYear()函数
getUTCFullYear()函数则是根据UTC时间返回了四位数来代表年份。与getFullYear()方法理论角度是完全不同,虽然在大部分的时间里输出是相同的,但是假如当天日期是12月31日或1月1日,则getUTCFullYear() 返回值与getFullYear()返回值就有可能不同,具体取决于当地时区和UTC通用时间之间的关系,也就是差值。
<script type="text/javascript">
var d = new Date();
document.write(d.getUTCFullYear());//IE输出2009,FIREFOX输出2009
</script>
比如在中国大陆、、香港、澳门、蒙古国、台湾、新加坡、马来西亚、菲律宾等地区的本地时间比UTC快8小时,记作UTC+8,意思就是比UTC时间快8小时。减的类似理解,比如UTC-10等。
相关文章推荐
- JavaScript中getYear()显示错误问题
- 解决调用本地时间做的时间显示中可能出现的时间调用错误的问题
- JavaScript js 兼容浏览器问题 兼容FireFox(FF)、IE的解决方法
- Javascript中常遇到的浏览器兼容问题和解决方法
- 12种Javascript解决常见浏览器兼容问题的方法
- IIS7配置ASP详细错误信息发送到浏览器显示的方法
- 关于高清在线播放器:[迅播播放器][可使用javascript调用][完全兼容asp,jsp,php,.net等主流语言编写的程序]
- IE8下javascript的时间函数Date()不兼容问题,显示NAN【转】
- 在PHP调用JS中的方法,以此来解决浏览器兼容问题
- Javascript解决常见浏览器兼容问题的12种方法
- [JavaScript]JS中常遇到的浏览器兼容问题和解决方法
- Javascript中常遇到的浏览器兼容问题和解决方法
- 12种Javascript解决常见浏览器兼容问题的方法
- MATLAB在调用C/C++程序成功,使用opencv库时出错,错误显示“找不到指定模块”(问题未解决)
- 12种Javascript解决常见浏览器兼容问题的方法
- JavaScript在浏览器标题栏上显示当前日期和时间的方法
- windows 2012(64位) IIS配置asp程序 500 - 内部服务器错误。您查找的资源存在问题,因而无法显示。
- JavaScript js 兼容浏览器问题 兼容FireFox(FF)、IE的解决方法
- JavaScript中getYear()显示错误问题!
- 程序中和有js函数的网页交互,线程中调用 get_Script 就会错误的解决方法,由于COM的线程安全问题