我在Javascript中创建了一个updateTime()
函数,该函数在localhost
中正常工作但在server
HTML / PHP:
<?php
date_default_timezone_set('Asia/Tehran');
$datestr = strtotime('now');
$date = date("y/m/d H:i",$datestr);
?>
<span class="TA" title="<?php echo $date ?>" info="<?php echo $datestr ?>"></span>
JS:
$(document).ready(function(e) {
$('.TA').each(function() {
var time = $(this).attr('info');
updateTime(this,time);
});
setInterval(function(){
$('.TA').each(function(index,el){
var time = $(el).attr('info');
updateTime(el,time);
});
},15000);
});
function updateTime(el,time){
var strTime = time;
var nowStr = Date.now()/1000;
var mins = parseInt(nowStr) - parseInt(strTime);
var re = '';
if(mins>=0 && mins <86400)
{
if(mins>=0 && mins <60)
re = 'just now';
else
if(mins>=60 && mins<3600)
{
mins = Math.floor(mins/60);
mins = mins == 1 ? 'a':mins;
re = mins+' min'+(mins>1 ?'s':'')+' ago';
}else
if(mins>=3600 && mins<86400)
{
var h = Math.floor(mins/3600);
h = h == 1 ? 'an':h;
re = h+' hour'+(h>1 ?'s':'')+' ago';
}
$(el).text(re);
}else
$(el).text($(el).attr('title'));
}
实际上strtotime('now');
和localhost
中的server
之间存在差异。
我该如何改善这个问题?提前致谢 。
答案 0 :(得分:1)
您可以使用JSON [P]并访问时间API:
(下面的代码应该可以正常工作,只需测试它......)
function getTime(zone, success) {
var url = 'http://json-time.appspot.com/time.json?tz=' + zone,
ud = 'json' + (+new Date());
window[ud]= function(o){
success && success(new Date(o.datetime));
};
document.getElementsByTagName('head')[0].appendChild((function(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = url + '&callback=' + ud;
return s;
})());
}
getTime('GMT', function(time){
// This is where you do whatever you want with the time:
alert(time);
});
如果你想通过php获取它:
$usersTimezone = 'Asia/Tehran';
$date = new DateTime( 'Thu, 31 Mar 2011 02:05:59 GMT', new DateTimeZone($usersTimezone) );
echo $date->format('y/m/d H:i');
答案 1 :(得分:1)
它可能在本地工作,因为您的浏览器和localhost是同一台机器,但服务器不是,不同机器上的时间可能不同。
客户端计算机上的时间由javascript使用,但info属性中的时间由服务器设置。要解决此问题,请仅使用客户端时间(例如,在页面加载时使用javascript设置info属性)或使用KaMZaTa为客户端和服务器提及的时间API。