显示另一个时区的时间

Showing the time of another time zone

本文关键字:时间 时区 另一个 显示      更新时间:2023-09-26

我正在创建一个页面,该页面必须显示UTC时间,我的当前时间和其他/国家/时区时间。我使用moment.min.js,moment-timezone.js,jquery.min.js - 我用过 - http://www.digitoffee.com/programming/get-local-time-utc-using-moment-js/94/。请帮助我获取另一个时区的时间。- 这是jsFiddle中的代码 - https://jsfiddle.net/shejus/g63d2onw/10/- 请帮忙

<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>

有几个错误:

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

    • jQuery 未加载,因为您提供了一个http URL,并且小提琴是通过 https 加载的。 根据经验,在 jsFiddle 上加载外部资源时指定协议相对 URL。(以 // 开头的 URL,省略任何http:https:)。

    • 您正在加载时刻-时区之前。 根据时刻时区文档,您需要加载时刻。 时刻时区与时刻全局挂钩。

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

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

  • 您有一些脚本超出了 setInterval 调用的内部函数的范围。 这导致divUtc在首次运行时未定义,并且未填充"其他时区时间"。 仔细观察右括号。

解决上述问题后,您的代码就可以正常工作。 在这里更新了小提琴。

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

完全优化的jsFiddle在这里,代码如下:

$(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);
});

最后,我只想评论一下,一般来说,你应该尝试在 Stack Overflow 上提出更具体的问题,而不仅仅是寻找一般的调试帮助。 Stack Overflow主要是关于提供有用的可重用问题和答案,除了帮助您解决此特定问题外,这些问题和答案还将帮助其他人。 下次,请按照堆栈溢出帮助中心的以下文章中的指导进行操作:

  • 我如何问一个好问题?
  • 如何创建最小、完整且可验证的示例