Javascript 将时间转换为纪元格式

Javascript convert time to epoch format

我有一个看起来像这样的日期刺2016-02-21T02:14:39.000000

如果可能的话,想使用 Javascript 将其转换为纪元时间

尝试

var ts = "2016-02-21T02:14:39.000000";

var unix_seconds = ((new Date(ts)).getTime()) /1000;

console.log(unix_seconds);

getTime returns 毫秒,所以除以 1000 得到秒

https://jsfiddle.net/tbxac0de/

据推测,"convert it to Epoch time" 是指自通用 UNIX 和 ECMAScript 纪元以来的秒数或毫秒数。可以通过将字符串转换为日期并获取其内部时间值来找到时间值。

到目前为止,将字符串转换为日期的最佳方法是手动解析它。库可以提供帮助,但函数并不难编写。例如。将“2016-02-21T02:14:39.000000”解析为本地日期(即没有时区的 ISO 8601 格式),使用类似:

// Parse y-m-dTh:m:s as local date and time
// since there is no timezone
function parseIsoLocal(s) {
  var b = s.split(/\D/);
  return new Date(b[0],b[1]-1,b[2],b[3],b[4],b[5],
                 ((b[6]||'')+'000').slice(0,3));
}

// Convert string to Date
var d = parseIsoLocal('2016-02-21T02:14:39.000000');

// Show date and milliseconds since epoch
document.write(d + '<br>' + +d);

上面的内容可以很容易地扩展为将字符串视为 UTC,合并时区并验证输入,但在这种情况下似乎不需要这样做。

请注意,大多数浏览器都会解析 OP 中的格式,但有些正在使用的浏览器不会解析,有些会解析,有些将其视为本地格式,有些则将其视为 UTC。根据 ISO 8601,它应该被视为本地的,所以这就是我所做的。