在javascript中将iso日期转换为毫秒

Rob*_*tan 66 javascript iso isodate

我可以将iso日期转换为毫秒吗?例如,我想转换此iso

2012-02-10T13:19:11+0000
Run Code Online (Sandbox Code Playgroud)

到毫秒.

因为我想比较创建日期的当前日期.创建日期是iso日期.

Oyb*_*bek 111

试试这个

var date = new Date("11/21/1987 16:00:00"); // some mock date
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative
Run Code Online (Sandbox Code Playgroud)

编辑

您已提供ISO日期.它也被Date对象的构造函数接受

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();
Run Code Online (Sandbox Code Playgroud)

编辑

我发现最好的是手动摆脱偏移.

var myDate = new Date("2012-02-10T13:19:11+0000");
var offset = myDate.getTimezoneOffset() * 60 * 1000;

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
alert(withOffset);
alert(withoutOffset);
Run Code Online (Sandbox Code Playgroud)

似乎工作.至于将ISO字符串转换为Date对象的问题,您可以参考提供的链接.

编辑

根据Prasad19sara的评论修正了错误转换为毫秒的错误.


Tah*_*koz 24

以前的解决方案的简写是

var myDate = +new Date("2012-02-10T13:19:11+0000");
Run Code Online (Sandbox Code Playgroud)

它执行即时类型转换,并以毫秒格式直接输出日期.

另一种方法是使用Date util的parse方法,它只输出EPOCH时间,以毫秒为单位.

var myDate = Date.parse("2012-02-10T13:19:11+0000");
Run Code Online (Sandbox Code Playgroud)

  • 显式构造一个 JavaScript Number 对象要清晰得多:`const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z'))`,但是`new Date('2017-09-26T20:24 :18.801Z').getTime()` 或 `new Date('2017-09-26T20:24:18.801Z').valueOf()` 更具可读性。 (2认同)

sam*_*ane 5

截至2017年的另一种选择是使用Date.parse()。MDN的文档指出,但是,它在ES5之前是不可靠的。

var date = new Date(); // today's date and time in ISO format
var myDate = Date.parse(date);
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见小提琴


小智 5

是的,您可以在一行中完成此操作

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673
Run Code Online (Sandbox Code Playgroud)