Javascript/jQuery自动设置和更新时间

Javascript/jQuery auto set and update time

本文关键字:更新 时间 设置 jQuery Javascript      更新时间:2023-09-26

我在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')); 
 }

事实上CCD_ 5和CCD_ 6中的CCD_。

我该如何改进这个问题?提前谢谢。

您可以使用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');

它可能在本地工作,因为浏览器和localhost是同一台机器,但服务器不是,不同机器上的时间可能不同。

javascript使用客户端机器上的时间,但info属性中的时间由服务器设置。为了克服这个问题,只使用客户端时间(例如,当页面加载时使用javascript设置信息属性),或者使用KaMZaTa提到的客户端和服务器的时间API。