我正在创建一个必须显示的页面,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>
答案 0 :(得分:3)
有几个错误:
您的小提琴未加载您指定的所有资源。
jQuery未加载,因为您提供了http
网址,而小提琴则通过https
加载。根据经验,在jsFiddle上加载外部资源时指定protocol-relative URLs。 (使用//
启动网址,不要使用任何http:
或https:
。
你正在加载片刻时区。根据时刻 - 时区文档,您需要加载首先的时刻。瞬间 - 时区陷入了全球化的时刻。
您没有向时区提供任何时区数据。您可以使用moment.tz.add
手动加载特定时区的数据,也可以使用其中一个预先填充的数据文件,例如moment-timezone-with-data-2010-2020.min.js
。您使用此文件而不是 moment-timezone.min.js
文件(包括脚本和数据)。
您的HTML代码段中有<body>
个标记。这在jsFiddle中不是必需的。
您有一些内部函数范围之外的脚本被setInterval
调用。这导致首次运行时divUtc
未定义,并且未填充“其他时区时间”。仔细观察结束括号。
解决了上述问题,您的代码运行正常。 Updated fiddle here
但是,您的脚本中仍然有一些不必要的操作。通常,不需要使用div内容,字符串或Date
对象作为中间状态持有者。实际上,因为你没有对moment对象做任何其他事情,你可以只创建一次并在每次显示之前改变状态。 (如果您正在进行进一步的操作,您可能希望首先克隆。)
The fully optimized jsFiddle is here,代码如下:
$(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主要是提供有用的可重复使用的问题和答案,除了帮助您解决这个特定问题之外,还有助于其他人。下次,请按照Stack Overflow帮助中心的以下文章中的指导进行操作: