我有一个日期字符串,长这样:2016-02-21T02:14:39.000000
如果可能的话,我想用JavaScript将其转换为Epoch时间。
我有一个日期字符串,长这样:2016-02-21T02:14:39.000000
如果可能的话,我想用JavaScript将其转换为Epoch时间。
尝试
var ts = "2016-02-21T02:14:39.000000";
var unix_seconds = ((new Date(ts)).getTime()) /1000;
console.log(unix_seconds);
getTime
返回的是毫秒数,所以需要除以1000以获得秒数
假设您所说的“将其转换为Epoch时间”是指自公共UNIX和ECMAScript纪元以来的秒数或毫秒数。可以通过将字符串转换为Date并获取其内部时间值来找到时间值。
将字符串转换为Date的最佳方法是手动解析它。库可以帮助,但编写函数并不难。例如,要将“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,应将其视为本地时间,因此我已经这样做了。