javascript - 在设定的时区中查找两个日期之间的差异
问题描述
我正在尝试制作一个计时器,在设定的时区倒计时一周的剩余时间。最初,我是用 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 中所做的那样。
谁能帮我找出毫秒之间的差异?
解决方案
您可以对 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`);
推荐阅读
- random - 如何重复一个随机数
- python - Gensim 是否处理 W2V 模型中的 pad 索引和 UNK 索引?
- jquery - yii2 中的 LIKE AND LIKE 语句
- java - 如何使用表中的数据发送 POST 请求?
- r - R:在一个管道中组合几个 apply() 函数
- indy - indy gettickdiff64() 18446744073709551600 问题
- c# - 使用导致异常的表达式过滤 EfCore DbSet
- azure - 如何使用 Azure CLI 为 Azure IotHub 创建会话?
- python - 将数据框中的浮点数舍入到最接近的特定浮点值(舍入到非整数列表)
- algorithm - 相同用户的kmeans算法