Javascript 日期及日期;时间脚本-ie vs ff

Javascript 日期及日期;时间脚本-ie vs ff,javascript,datetime,Javascript,Datetime,我下面的脚本在ie中工作,但在firefox中我得到: Mon, July 16th 2012 //this is ok NaN:NaN:NaN (UTC +2) //but the time??? var weekdaystxt=[“太阳”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”]; 函数showLocalTime(容器、服务器模式、offsetMinutes、displayversion){ 如果(!document.getElementById | |!docum

我下面的脚本在ie中工作,但在firefox中我得到:

Mon, July 16th 2012 //this is ok

NaN:NaN:NaN (UTC +2) //but the time???

var weekdaystxt=[“太阳”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”];
函数showLocalTime(容器、服务器模式、offsetMinutes、displayversion){
如果(!document.getElementById | |!document.getElementById(容器))返回
this.container=document.getElementById(容器)
this.displayversion=displayversion
var servertimestring=(servermode==“server php”)?“”:(servermode==“server ssi”)?“”
this.localtime=this.serverdate=新日期(servertimestring)
this.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000)//将用户偏移量添加到服务器时间
this.updateTime()
this.updateContainer()
}
showLocalTime.prototype.updateTime=函数(){
var thisobj=这个
this.localtime.setSeconds(this.localtime.getSeconds()+1)
setTimeout(函数(){
thisobj.updateTime()
},1000)//每秒更新一次
}
showLocalTime.prototype.updateContainer=函数(){
var thisobj=这个
如果(this.displayversion==“long”)this.container.innerHTML=''
否则{
var hour=this.localtime.getHours()
var minutes=this.localtime.getMinutes()
var seconds=this.localtime.getSeconds()
var ampm=(小时>=12)?“下午”:“上午”
var dayofweek=weekdaystxt[this.localtime.getDay()]
this.container.innerHTML=formatField(小时,1)+:“+formatField(分钟)++”:“+formatField(秒)+”(UTC+2)
}
setTimeout(函数(){
thisobj.updateContainer()
},1000)//每秒更新一次容器
}
函数formatField(num,isHour){
if(typeof isHour!=“undefined”){//如果这是小时字段
变量小时=(数值>24)?数值-24:num
返回时间(小时==0)?24小时
}

return(num首先,这里是您发布的JSFIDLE代码,以便我们都能看到发生了什么-

请注意,这是一个工作版本。问题在于IE和Chrome解析日期的方式不同。无论返回的是什么,Chrome都不喜欢它,并且在创建新的Date()对象时无法解析

您需要确保您的服务器发送回的日期字符串的格式可以跨浏览器工作


至于我的解决方案(虽然它不是真正的解决方案,因为你似乎想要服务器时间),是用新的日期()替换你的servertimestring字符串。我还添加了分号,因为我还有一堆额外的内容。

无效格式数据:Mon,July 16th 2012 17:02:32

Php使用$\u SERVER['REQUEST\u TIME']并乘以1000

这将:

var servertimestring = (servermode == "server-php") ? '<?php echo $_SERVER['REQUEST_TIME']*1000;?>' : (servermode == "server-ssi") ? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>';
var servertimestring=(servermode==“server php”)?“”:(servermode==“server ssi”)?“”;

除非他已经动态生成了从PHP(BLUUCH)产生的JS。无论何时,只要解决方案是正确的,我接受……如果在中间,我不能……)所以我应该改变日期和时间的代码???如果你给我一个电子邮件地址,我可以给你发送一个分号。我有很多额外的,我可能永远不会使用。
var servertimestring = (servermode == "server-php") ? '<?php echo $_SERVER['REQUEST_TIME']*1000;?>' : (servermode == "server-ssi") ? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>';