查找设置时区中两个日期之间的时差

时间:2019-03-26 00:41:14

标签: javascript php

我正在尝试制作一个计时器,用于在设置的时区中计算一周中剩余的时间。最初,我是用PHP来做的,但是我只是想用Javascript来做。最初,我使用以下代码:

date_default_timezone_set('Australia/Sydney');
$days = (new DateTime())->diff(new DateTime('1970-01-04'))->format('%a');
$week = ceil($days/7)-2544;
$day = ceil($days/7)*7 - $days;
$hour = 24-(new DateTime())->diff(new DateTime('00:00:00'))->format('%H');

我希望它给出自设定的一周以来的周数,这就是为什么它本周$week =...-2544给出24或25的东西。我的问题是我不知道如何用纯Javascript做到这一点。

此刻我有这个:

var time = new Date().toLocaleString("en-GB",{timeZone:"Australia/Sydney"});

给我26/03/2019 11:31:52,就像我上次运行该函数一样。

然后使用

var time = new Date(-1*1000*60*60*10).toLocaleString("en-GB",{timeZone:"Australia/Sydney"});

给我0/0/1970 00:00:00

我有两个日期需要找出两者之间的区别。

我的问题是我似乎无法弄清楚如何找到这种差异。它似乎并不能让我使用.getTime(),我认为这可能是因为日期可能只是我需要以某种方式格式化才能工作的字符串,如PHP中所做的那样。

有人能帮助我找出毫秒之间的差异吗?

1 个答案:

答案 0 :(得分:0)

您可以对Date对象执行数学运算(+,-等)

因此使用Date对象,如果需要字符串版本,请存储在另一个变量中

    var time1 = new Date();
    var time1String = time1.toLocaleString("en-GB",{timeZone:"Australia/Sydney"});
    var time2 = new Date(-1*1000*60*60*10);
    var time2String = time2.toLocaleString("en-GB",{timeZone:"Australia/Sydney"});
    console.log(`The difference between ${time1String} and ${time2String} is ${time1-time2}ms`);