在javascript中将UTC字符串转换为纪元时间

kat*_*uya 7 javascript datetime epoch

如何2011-03-29 17:06:21 UTC在javascript中将UTC日期时间字符串(例如)转换为Epoch(毫秒)?

如果这不可能,有没有办法比较(如<,>)UTC日期时间字符串?

mae*_*ics 6

请注意,UTC 日期字符串可以像字符串一样按字典顺序进行比较,因为较高顺序的值出现在字符串的最左侧。

var s1 = '2011-03-29 17:06:21 UTC'
  , s2 = '2001-09-09 01:46:40 UTC';
s1 > s2; // => true
s2 > s1; // => false
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法从示例字符串中提取日期字段并返回毫秒数Date.UTC

var getEpochMillis = function(dateStr) {
  var r = /^\s*(\d{4})-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+UTC\s*$/
    , m = (""+dateStr).match(r);
  return (m) ? Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]) : undefined;
};
getEpochMillis('2011-03-29 17:06:21 UTC'); // => 1301418381000
getEpochMillis('2001-09-09 01:46:40 UTC'); // => 1000000000000
Run Code Online (Sandbox Code Playgroud)

  • @Vik David:感谢您对 Safari 的提醒;我更新了我的答案以使用 ECMA-262 第 5 版中定义的 UTC 方法,该方法应该得到更好的支持。日期解析在 JavaScript 中确实是一个痛苦的事情...... (2认同)