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

IT技术 javascript iso isodate
2021-03-05 01:31:53

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

2012-02-10T13:19:11+0000

到毫秒。

因为我想比较当前日期和创建日期。而创建日期是一个iso日期。

6个回答

试试这个

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

console.log(milliseconds);

编辑

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

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();
console.log(result);

编辑

我发现的最好的方法是手动摆脱偏移量。

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

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
console.log(withOffset);
console.log(withoutOffset);

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

编辑

修复了根据 Prasad19sara 的评论错误转换为毫秒的错误。

是的,Date 不会在所有浏览器上解析。请参阅我对相关问题的回答。
2021-04-29 01:31:53
并查看我对你下面答案的评论;)
2021-04-29 01:31:53
呃……那是大写的“T”在里面做什么?这就是为什么它不起作用@mplungjan。
2021-05-07 01:31:53
@mplungjan 为什么不使用这种方法我知道这很麻烦,但无论如何 ))
2021-05-13 01:31:53
这在 Firefox 中不起作用 var myDate = new Date("2012-02-10T13:19:11+0000");
2021-05-17 01:31:53

先前解决方案的简写是

var myDate = +new Date("2012-02-10T13:19:11+0000");

它进行动态类型转换并以毫秒格式直接输出日期。

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

var myDate = Date.parse("2012-02-10T13:19:11+0000");
@LordTribual "+new" 以毫秒为单位返回日期?
2021-04-19 01:31:53
@stuart-siegler 这实际上没有打错字,“+”以毫秒为单位返回日期。
2021-04-30 01:31:53
@stuart-siegler 不是专门的“+new”,但“+”可以解决问题,可以说是速记。例如+new Date()返回1447857230137以毫秒为单位的时间。
2021-05-06 01:31:53
显式构造一个 JavaScript Number 对象会更清晰:const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z')),但new Date('2017-09-26T20:24:18.801Z').getTime()ornew Date('2017-09-26T20:24:18.801Z').valueOf()甚至更具可读性。
2021-05-08 01:31:53
你有一个小错字,'+'
2021-05-12 01:31:53

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

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

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

ECMAScript 2011之后的内置解析器也不可靠:-)
2021-04-22 01:31:53

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

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673
这个函数的反面是什么!?
2021-04-23 01:31:53

另一种可能的解决方案是将当前日期与 进行比较January 1, 1970,您可以January 1, 1970通过new Date(0);

var date = new Date(); 
var myDate= date - new Date(0);