gpt4 book ai didi

JavaScript UTC 日期转换

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

我有一个向其传递日期字符串的函数,我需要根据当前 UTC 日期确定提供的日期是否是过去的日期。

我认为我的问题来自 dateToUTC 函数,因为它返回 UTC 上午 7 点的日期,其中 currentUTC 为我提供了完整的时间戳。

这几乎就像我需要将 hh/mm/ss 附加到我提供的日期末尾才能检查?

关于如何调整这个有什么想法吗?

// I expect this to return false since the UTC DATE is not 08/17/2017
alert(isHistoricalChange('08/16/2017'))

/**
* Determine if the start date supplied is in the past
*/
function isHistoricalChange(startDate){
// dateToUTC(startDate) = 1502866800000
// currentUTC() = 1502903243386
return (dateToUTC(startDate) < currentUTC());
}


/**
* Returns the current timestamp in UTC
*/
function currentUTC() {
return Date.now();
}


/**
* Returns timestamp in UTC based on date supplied
*/
function dateToUTC(d) {
return new Date(d).getTime();
}

fiddle :http://jsfiddle.net/981ats14/

最佳答案

我不确定你想做什么。如果您希望将“08/16/2017”(我假设是 2017 年 8 月 16 日)解析为 UTC,然后查看它是否早于当前日期,那么您可以使用简单的解析函数。

当前的“UTC 日期”由 new Date() 提供,因为 Date 对象是 UTC。用于计算当前 UTC 时间的主机时区设置,通常通过 toStringtoLocaleString 方法返回主机时区中的日期和时间。但 Date 对象中的基础值是 UTC。

因此您可以将“08/16/2017”解析为 UTC 并简单地将其与 new Date() 进行比较:

function parseMDYasUTC(s) {
var b = s.split(/\D/);
return new Date(Date.UTC(b[2], b[0]-1, b[1]));
}

var d = parseMDYasUTC('08/16/2017')
console.log('2017-08-16 parsed as UTC:\n' + d.toString() +
' or \n' + d.toISOString());

console.log('Is "08/16/2017" UTC before today? ' +
(parseMDYasUTC("08/16/2017") < new Date()));

字符串“2017-08-16”应由内置解析器解析为 UTC,但是字符串解析非常不可靠,因此始终手动解析字符串。库可以提供帮助,但简单的函数通常就足够了。

关于JavaScript UTC 日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45719567/

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