如何将UTC日期时间字符串(例如2011-03-29 17:06:21 UTC
)转换为javascript中的Epoch(毫秒)?
如果这是不可能的,是否有任何方法来比较(如<,>) UTC日期时间字符串?
请注意,UTC日期字符串可以像字符串一样按字典顺序进行比较,因为高阶值出现在字符串的最左边。
var s1 = '2011-03-29 17:06:21 UTC'
, s2 = '2001-09-09 01:46:40 UTC';
s1 > s2; // => true
s2 > s1; // => false
您可以从示例字符串中提取日期字段,并通过使用Date.UTC
方法返回毫秒数:
var getEpochMillis = function(dateStr) {
var r = /^s*(d{4})-(dd)-(dd)s+(dd):(dd):(dd)s+UTCs*$/
, 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
就是这样做的。没有nonsese。日期。UTC接受UTC时间戳并返回epoch
var epoch_date = Date.UTC(year,mon,day,hours,min,sec,milisec);
使用datejs将帮助您将UTC字符串转换为Date对象。之后,只需在date对象上调用. gettime()来获取毫秒数。
只要datetime字符串是明确的类似iso8601格式(即不是MM/DD/YYYY vs DD/MM/YYYY),您可以使用Date构造函数来解析它,然后使用Math.floor:
Math.floor(new Date('2011-03-29 17:06:21 UTC') / 1000); // => 1301418381
您可以像这样使用getDateFromFormat(dateValue, dateFormat)
(在这里可用):
getDateFromFormat("2011-03-29 17:06:21","yyyy-MM-dd HH:mm:ss")
以毫秒为单位返回历元时间