JavaScript UTC 日期转换

标签 javascript date datetime

我有一个向其传递日期字符串的函数,我需要根据当前 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/

相关文章:

javascript - 如何从多个 SELECT 标签中获取值 (Jquery)

javascript - 单一函数中的多个 Promise 链

javascript - 两个日期时间字符串有什么区别?

java - LocalDateTime 解析抛出 "java.lang.IllegalArgumentException: Unknown pattern letter: T"

php - 用于查找给定日期的开放时间段的 Google Calendar API 算法

javascript - 如何使用 javascript 启动应用程序?

javascript - 使用正则表达式匹配 YouTube 播放列表网址,而不是匹配播放列表中的歌曲

python - 日期时间Python

mysql - 将 12 小时添加到 mysql 当前时间戳

ruby-on-rails - 将日期时间更改为月、日、年