【问题标题】:convert iso date to milliseconds in javascript在javascript中将iso日期转换为毫秒
【发布时间】:2012-03-03 00:09:54
【问题描述】:

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

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

毫秒。

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

【问题讨论】:

  • “毫秒”到底是什么意思?相对于哪个时间点的毫秒数?你是说 UNIX 时间戳吗?
  • 就像在yahoo api中一样,日期以毫秒为单位1328796537,但在fb api中,日期以iso的形式显示2012-02-10T13:18:45+0000
  • @mplungjan 相关,但不准确。我想得到两次之间的差异。
  • 所以先使用链接将它们转换为日期,然后执行date1.getTime() - date2.getTime() - 这就是你所需要的

标签: javascript iso isodate


【解决方案1】:

试试这个

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 的评论错误转换为毫秒的错误。

【讨论】:

  • 是的,日期不会在所有浏览器上解析。 See my answer on related question.
  • 看看我对你答案的评论;)
  • 这在 Firefox 中不起作用var myDate = new Date("2012-02-10T13:19:11+0000");
  • @mplungjan 为什么不使用this approach?我知道这很麻烦,但无论如何))
  • 呃……那个大写的“T”在里面做什么?这就是为什么它不起作用@mplungjan。
【解决方案2】:

之前解决方案的简写是

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

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

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

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

【讨论】:

  • 你有一个小错字,'+'
  • @stuart-siegler 实际上没有错字,'+' 以毫秒为单位返回日期。
  • @LordTribual "+new" 以毫秒为单位返回日期?
  • @stuart-siegler 不是特别是“+new”,而是“+”可以解决问题,可以说是一种速记。例如+new Date() 返回1447857230137,它是以毫秒为单位的时间。
  • 显式构造一个 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() 更具可读性。
【解决方案3】:

2017 年的另一个选项是使用Date.parse()。然而,MDN 的documentation 指出,在 ES5 之前它是不可靠的。

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

有关详细信息,请参阅fiddle。

【讨论】:

  • 内置解析器在 ECMAScript 2011 之后也不可靠。 :-)
【解决方案4】:

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

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

【讨论】:

  • 这个函数的反义词是什么!?
【解决方案5】:

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

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

【讨论】:

    【解决方案6】:

    另一种解决方案是像这样使用 Number 对象解析器:

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

    这将转换为毫秒,就像 getTime() 在 Date 对象上一样

    【讨论】:

      【解决方案7】:
      var date = new Date()
      console.log(" Date in MS last three digit = "+  date.getMilliseconds())
      console.log(" MS = "+ Date.now())
      

      使用这个我们可以得到毫秒数的日期

      【讨论】:

        【解决方案8】:

        var date = new Date(date_string); var 毫秒 = date.getTime();

        这对我有用!

        【讨论】:

          【解决方案9】:

          如果想将 UTC 日期转换为毫秒
          语法:Date.UTC(year, month, ?day, ?hours, ?min, ?sec, ?milisec);
          例如:
          date_in_mili = Date.UTC(2020, 07, 03, 03, 40, 40, 40);
          console.log('miliseconds', date_in_mili);

          【讨论】:

            【解决方案10】:

            如果有人想只获取来自 ISO 日期的时间,以下内容会有所帮助。我正在寻找它,但我找不到它的问题。所以万一有人看到会有帮助。

            let isoDate = '2020-09-28T15:27:15+05:30';
            let result = isoDate.match(/\d\d:\d\d/);
            console.log(result[0]);
            

            输出将是来自 isoDate 的唯一时间,即,

            15:27
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-12-05
              • 2011-06-08
              • 1970-01-01
              • 1970-01-01
              • 2019-12-24
              • 1970-01-01
              相关资源
              最近更新 更多