Javascript 显示另一时区的时间

Javascript 显示另一时区的时间,javascript,time,timezone,momentjs,Javascript,Time,Timezone,Momentjs,我正在创建一个页面,其中必须显示UTC时间、我的当前时间和其他/国家/时区时间。我使用moment.min.js、moment-timezone.js、jquery.min.js-我使用-。请帮我查一下另一个时区的时间这是JSFIDLE中的代码--请帮助 <html> <head> <title>DISPLAY TIME</title> </head> <body>

我正在创建一个页面,其中必须显示UTC时间、我的当前时间和其他/国家/时区时间。我使用moment.min.js、moment-timezone.js、jquery.min.js-我使用-。请帮我查一下另一个时区的时间这是JSFIDLE中的代码--请帮助

<html>
    <head>
        <title>DISPLAY TIME</title>
    </head>
    <body>

        UTC
        <br/>
        <div id="divUTC"></div>
        <br/>
Your Local Time with respect to above UTC time
        <br/>
        <div id="divLocal"></div>
        <br/>
OTHER TIMEZONE TIME
        <br/>
        <div id="anyutctime"></div>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script src="js/moment.min.js"></script>
        <script>
    $(function(){
  setInterval(function(){
    var divUtc = $('#divUTC');
    var divLocal = $('#divLocal');
    var anyutctime = $ ('#anyutctime');

    //put UTC time into divUTC  
    divUtc.text(moment.utc().format('YYYY-MM-DD HH:mm:ss'));      

    //get text from divUTC and conver to local timezone  
    var localTime  = moment.utc(divUtc.text()).toDate();
    localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');
    divLocal.text(localTime);        
  },1000);

    //Display time of Another timezone 
     var anyTime  = moment.utc(divUtc.text()).toDate();
    anyTime = moment.tz("America/Chicago").format('YYYY-MM-DD HH:mm:ss');
    anyutctime.text(anyTime);        
});
    </script>
        <script src="js/moment-timezone.js"></script>
    </body>
</html>

显示时间
UTC


您的当地时间(相对于UTC时间以上)

其他时区时间
$(函数(){ setInterval(函数(){ var divUtc=$(“#divUtc”); var divLocal=$(“#divLocal”); var anyutctime=$(“#anyutctime”); //将UTC时间转换为UTC时间 文本(矩.utc()格式('YYYY-MM-DD HH:MM:ss'); //从divUTC和conver获取文本到本地时区 var localTime=moment.utc(divUtc.text()).toDate(); localTime=时刻(localTime).format('YYYY-MM-DD HH:MM:ss'); divLocal.text(localTime); },1000); //显示另一时区的时间 var anyTime=moment.utc(divUtc.text()).toDate(); anyTime=矩.tz(“美国/芝加哥”).format('YYYY-MM-DD HH:MM:ss'); anyutctime.text(任何时候); });
有几个错误:

  • 您的小提琴没有加载您指定的所有资源

    • jQuery没有加载,因为您提供了一个
      http
      URL,而fiddle是通过
      https
      加载的。根据经验,指定在JSFIDLE上加载外部资源的时间。(以
      /
      开始URL,去掉任何
      http:
      https:

    • 你在瞬间之前加载瞬间时区。根据时刻时区文档,您需要首先加载时刻。时刻时区与时刻全局挂钩

  • 您没有向矩时区提供任何时区数据。您可以使用
    moment.tz.add
    手动加载特定时区的数据,也可以使用预填充的数据文件之一,例如
    moment-timezone-with-data-2010-2020.min.js
    。您使用此文件而不是
    矩时区.min.js
    文件(它包括脚本和数据)

  • 您的HTML代码段中有一个
    标记。这在JSFIDLE中不是必需的

  • 您的一些脚本超出了由
    setInterval
    调用的内部函数的范围。这导致第一次运行时未定义
    divUtc
    ,并且未填充“其他时区时间”。仔细观察闭合支架

解决了上述问题后,您的代码就可以正常工作了

但是,脚本中仍有一些不必要的操作。通常,不需要使用div内容、字符串或
Date
对象作为中间状态持有者。事实上,因为您没有对矩对象执行任何其他操作,所以您可以只创建它一次,并在每次显示之前改变状态。(如果要执行进一步的操作,可能需要先克隆它。)

,代码如下:

$(function(){
  setInterval(function(){
    var divUtc = $('#divUTC');
    var divLocal = $('#divLocal');
    var divOther = $('#divOther');

    var format = 'YYYY-MM-DD HH:mm:ss';

    // get current local time
    var now = moment();

    // display the local time
    divLocal.text(now.format(format));

    // switch to utc mode and display
    divUtc.text(moment.utc().format(format));      

    // switch to another time zone and display
    divOther.text(now.tz('America/Chicago').format(format));
  },1000);
});
最后,我要说的是,一般来说,您应该尝试询问有关堆栈溢出的更具体的问题,而不仅仅是寻求一般调试帮助。堆栈溢出主要是提供有用的、可重复使用的问题和答案,这些问题和答案除了可以帮助您解决这个特定问题外,还可以帮助其他人。下次,请遵循堆栈溢出帮助中心以下文章中的指导: