gpt4 book ai didi

JavaScript 获取前一天晚上 11 点的日期字符串

转载 作者:行者123 更新时间:2023-11-29 10:29:22 25 4
gpt4 key购买 nike

我有以下输入字段:在我的网络应用程序中,我有 -

字符串日期 - 06/05/2018

还有这个 JS 代码:

var d = "06/05/2018".split("/");
var date = new Date(d[2] + "-" + d[1] + "/" + d[0]).getTime();
console.log(date)

这将返回 1525561200000 如果我将其放入 epoch converter给我...

2018 年 5 月 5 日星期六晚上 11:00:00

这会搞砸我的过滤系统 - 日期范围,因为如果我在输入字段中选择最小日期为 06/05/2018:

var d = $('#min').val()
var date = new Date(d).getTime();
console.log(date)

input field

返回 15255648000002018 年 5 月 6 日星期日 12:00:00 AM

我该如何解决这个问题?

谢谢

最佳答案

我可以写一整篇论文来说明在 Javascript 中处理日期有多么困难和困难,以及如何避免陷阱和奇怪的错误,但最终你的具体问题归结为一个简单的错字。
您手动解析并传递给 Date 构造函数的字符串如下所示:

2018-05/06

在连接字符串时,您错误地使用了 / 而不是 - 作为第二个分隔符。出于某种原因,浏览器随后将日期对象创建为 2018-05-06 午夜 本地时间。当以标准格式传递字符串时(这是从日期输入中获取字符串时发生的情况),即 2018-05-06,日期对象创建为 midnight 2018-05 -06 UTC 时间

因此,简而言之,您的问题可以通过在字符串连接中将 "/" 替换为 "-" 来解决,并且两个日期应该相同。

但是,我应该指出,将字符串传递给 Date 构造函数是不可靠的,因为结果不是标准化的,并且可能因浏览器而异(这也是为什么它的行为如此不可预测且看似不合逻辑的原因这个案例)。传递数字是更好的主意,因为规范规定了结果。您已经完成了一半,因为您已将日期字符串拆分为其组件。试试这个:

var date = new Date(
Number(d[2]),
Number(d[1]) - 1, // Subtracting 1 from month since it's base 0
Number(d[0])
).getTime();

(从技术上讲,我们甚至不需要显式转换为 Number,因为 Date 构造函数期望当有多个参数时所有参数都是数字并将在内部将其转换为数字)

关于JavaScript 获取前一天晚上 11 点的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50213423/

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