gpt4 book ai didi

javascript - Moment JS - UTC 与本地时间戳比较失败

转载 作者:行者123 更新时间:2023-12-01 03:57:00 25 4
gpt4 key购买 nike

将 UTC 日期格式转换为时间戳时,此条件始终会失败

const start_time = "2017-03-02T15:57:00Z";
const stop_time = "2017-03-02T17:51:00Z";
const local_timestamp = 1488498242256; // Thu Mar 02 2017 16:44:02 GMT-0700 (MST)

const start = moment(start_time).valueOf(); // 1488470220000
const stop = moment(stop_time).valueOf(); // 1488477060000

const is_between = local_timestamp >= start && local_timestamp <= stop; // false

所以我尝试了这个,但仍然失败

const start = moment(start_time).utc().valueOf(); // 1488470220000
const stop = moment(stop_time).utc().valueOf(); // 1488477060000
const is_between = local_timestamp >= start && local_timestamp <= stop; // false

同样的事情

const now = moment(local_timestamp);
const isBetween = now.isBetween(start, stop); // false

请帮助我理解这一点。

最佳答案

When converting a UTC date format to timestamp this condition will always fail

一个timestamp是表示日期或时间的任何内容,因此“2017-03-02T15:57:00Z”、“Thu Mar 02 2017 16:44:02 GMT-0700 (MST)”和 1488498242256 都是时间戳。

1488498242256 表示“2017-03-02T23:44:02.256Z”,它不在“2017-03-02T15:57:00Z”和“2017-03-02T17:51:00Z”之间,因此预期结果为你的测试是错误的。

So I tried this and still failed

它没有失败,它返回了预期的结果。

当你这样做时,说:

new Date(1488498242256)

然后创建一个 Date 实例,时间值为 1488498242256,代表“2017-03-02T23:44:02.256Z”。当您将其写入生成字符串的输出时,通常会调用 Date.prototype.toString 并以浏览器开发人员确定的人类友好格式生成字符串。

通常,这意味着主机系统时区偏移量用于生成字符串,您会看到类似以下内容的内容:

"Thu Mar 02 2017 16:44:02 GMT-0700 (MST)"

在 SO 上,控制台似乎使用 toISOString 而不是默认的 toString,例如

var date = new Date(1488498242256);

// Standard output for the host environment
console.log(date);

// Call Date.prototype.toString specifically
console.log(date.toString());

关于javascript - Moment JS - UTC 与本地时间戳比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42568415/

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