Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个时区格式日期之间的moment.js差异_Javascript_Momentjs - Fatal编程技术网

Javascript 两个时区格式日期之间的moment.js差异

Javascript 两个时区格式日期之间的moment.js差异,javascript,momentjs,Javascript,Momentjs,我必须计算设定时间和当前服务器时间之间的时间差 我正在使用momentjs和moment时区库 以下是我所拥有的: var serverTime = moment.tz(new Date(), "Europe/Berlin").format(); var bar = moment.tz("2016-05-14 00:00:00", "Europe/Berlin").format(); var baz = bar.diff(serverTime); console.log('server tim

我必须计算设定时间和当前服务器时间之间的时间差

我正在使用momentjs和moment时区库

以下是我所拥有的:

var serverTime = moment.tz(new Date(), "Europe/Berlin").format();
var bar = moment.tz("2016-05-14 00:00:00", "Europe/Berlin").format();
var baz = bar.diff(serverTime);

console.log('server time is: ' + serverTime);
console.log('time diff is: ' + baz);
这给了我一个错误:

TypeError: bar.diff is not a function

是否可以区分两个时区格式的日期?如果没有,那么使用momentjs库进行此类计算的最佳方式是什么?

moment.js确实很棒

看来我可以简单地做到:

moment.duration(day14.diff(serverTime)).asHours();
或者分别获取分钟和小时的数字

moment.duration(day14.diff(serverTime)).minutes();
moment.duration(day14.diff(serverTime)).hours();

format
生成字符串,所以在需要字符串之前不要使用它

var now = moment.tz("Europe/Berlin");
var bar = moment.tz("2016-05-14 00:00:00", "Europe/Berlin");
var baz = bar.diff(now);

console.log('current time is: ' + now.format());
console.log('time diff is: ' + baz);

请注意,这不是“服务器时间”,除非您正在服务器上运行此代码。只要它在客户端上运行,它仍然基于客户端的时钟-即使您使用不同的时区。

谢谢。我想我应该更好地命名这个变量。我正在使用日期之间的差异方法,这两个日期都转换为我指定的时区,因此我得到了期望的结果。但是,我想知道使用utc模拟服务器时间是否是一个好主意。如果您只是比较时间,您甚至不需要指定任何特定的时区,因为它在幕后使用utc。我只在第一行包含TZ,因为您稍后会显示它。如果你只关心DIFF,你可以只使用<代码> Simulink(<)>代码> .WRT“服务器时间”,真正做到这一点的唯一方法是从服务器获取一个时间戳,当然,你必须考虑在传输那个时间戳方面有延迟。您似乎将“使用服务器的时区”与“使用服务器的时钟”混为一谈。请记住,客户可以根据自己的需要更改时钟。不能保证它会同步。