gpt4 book ai didi

javascript - JS : How to compare 2 dates converting from UTC to defined timezone?

转载 作者:行者123 更新时间:2023-12-03 03:56:34 24 4
gpt4 key购买 nike

我存储了一个 UTC 日期字符串(没有时间):

var limitDateStr = "2017-07-04T00:00:00.000Z";

以及以小时为单位的时区 (based on this) ,不在区域名称中(例如美国/安提瓜岛)

var timezone = "-6.0"; //could be from -12.0 to 12.0 

问题是:验证实际日期是否大于同一时区的 limitDate。

<小时/>

我用 Moment.js 做什么

我使用 moment 来更改时区,但是当 y 更改偏移量时。日期也更改了:

  var _expirationDateUTC = moment.utc(limitDateStr).utcOffset(parseFloat(timezone)).format();
// "2017-07-03T18:00:00-06:00"

而不是2017-07-04T00:00:00-06:00

实际日期,效果很好:(节省天数除外)

var today = moment.utc().utcOffset(parseFloat(timezone)).format();
//"2017-07-04T15:32:49-06:00"

我想比较...也许与矩函数:

today.isAfter(_expirationDateUTC);

但到期日期现在按预期工作。

最佳答案

好吧,问题似乎是这样的:

var _expirationDateUTC = moment.utc(limitDateStr).utcOffset(parseFloat(timezone)).format();

其中limitDateStr =“2017-07-04T00:00:00.000Z”;

到目前为止,您所做的就是使用该日期提供 moment,然后应用时区偏移量,这会将时区(在本例中为 -6)减去您实际提供的日期。

“2017-07-04T00:00:00.000Z”- 6 小时 =“2017-07-03T18:00:00-06:00”

您要寻找的不是计算不同时区的 limitDate ,而是让 limitDate 与 utc 相同,但位于不同的时区。

因此,您需要这段代码来添加目标区域的小时数:

var limitDateStr = moment("2017-07-04T00:00:00.000Z");
var timezone = "-6.0"

//Substract the timezone offset to the time;
//This should be: "2017-07-04T06:00:00.000Z"
limitDateStr.subtract({hours: parseFloat(timezone)});

//Now you can apply the offseting
//and this will become: "2017-07-04T00:00:00-06:00"
var _expirationDateUTC = moment.utc(limitDateStr).utcOffset(parseFloat(timezone)).format();

var today = moment.utc().utcOffset(parseFloat(timezone)).format();

var hasExpired = today.isAfter(_expirationDateUTC);

关于javascript - JS : How to compare 2 dates converting from UTC to defined timezone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com