【问题标题】:Convert normal date to unix timestamp将普通日期转换为 unix 时间戳
【发布时间】:2012-08-07 05:58:51
【问题描述】:

如何在 javascript 中将普通日期 2012.08.10 转换为 unix 时间戳?

小提琴:http://jsfiddle.net/J2pWj/




我在这里看到了很多将其转换为 PHP、Ruby 等的帖子……但我需要在 JS 中执行此操作。

【问题讨论】:

  • 你试过 newDate.getTime() / 1000 吗?
  • @LokiAstari 是的,对不起。我做了搜索,但没有找到。
  • 也许我遗漏了一些东西,但unix timestamp 对于所有工程和计算机科学来说都是如此基础。希望有内置的便捷方法。目前我正在使用Math.floor((+new Date()) / 1000);

标签: javascript jquery date datetime unix-timestamp


【解决方案1】:

您可以使用 Date.parse(),但它接受的输入格式取决于实现。但是,如果您可以将日期转换为 ISO 格式 (YYYY-MM-DD),那么大多数实现应该都能理解它。

Why does Date.parse give incorrect results?

【讨论】:

    【解决方案2】:
    Math.floor(new Date('2012.08.10').getTime() / 1000)
    

    检查JavaScript Date documentation

    【讨论】:

    • Math.floor 它或它不是一个 unix 时间戳(它会有一个小数)
    • @fguillen,Mooseman,我运行并检查了这段代码。一旦我将 unix 时间戳转换为日期,它就会给我 2012.08.09 而不是 2012.08.10。这是为什么..?
    • @user2584538,请参阅下面的答案。您必须删除小数。
    • 为什么 Date.parse 给出不正确的结果?:stackoverflow.com/a/2587398/2714931
    • @Mentor UNIX 时间以秒为单位,而不是毫秒
    【解决方案3】:
    var datestr = '2012.08.10';
    var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
    

    【讨论】:

      【解决方案4】:
      parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
      

      在除以 1000 以将毫秒转换为秒时,添加 toFixed(0) 以删除所有小数非常重要。

      .getTime() 函数以毫秒为单位返回时间戳,但真正的 unix 时间戳始终以秒为单位。

      【讨论】:

      • 请注意,它返回的是字符串,而不是数字。
      • 好点,将答案更改为使用 parseInt() 换行以转换回整数。
      • 如果性能很重要,可能更好、更正确的选项是Math.roundMath.floor,而不是先转换为字符串然后再转换为整数 - 即:Math.round(new Date('2012.08.10').getTime() / 1000)
      【解决方案5】:

      您可以简单地使用一元 + 运算符

      (+new Date('2012.08.10')/1000).toFixed(0);

      http://xkr.us/articles/javascript/unary-add/ - 查看日期。

      【讨论】:

      • 只想在此处添加两个 cmets:不需要一元 add + 运算符,因为 / 已经是一个数学运算符。此外,toFixed 返回一个字符串而不是数字,以防类型很重要..
      【解决方案6】:

      您应该查看 moment.js api,它非常易于使用并且具有许多内置功能。

      我认为对于你的问题,你可以使用这样的东西:

      var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();
      

      【讨论】:

        【解决方案7】:

        var d = '2016-01-01T00:00:00.000Z';
        console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch

        【讨论】:

          【解决方案8】:

          在将时间戳与来自 PHP 的时间戳进行比较后,以上都不适用于我的时区。下面的代码给了我与 PHP 相同的结果,这对我正在做的项目来说是最重要的。

          function getTimeStamp(input) {
              var parts = input.trim().split(' ');
              var date = parts[0].split('-');
          	var time = (parts[1] ? parts[1] : '00:00:00').split(':');
          
          	// NOTE:: Month: 0 = January - 11 = December.
          	var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
          	return d.getTime() / 1000;
          }
          
          // USAGE::
          var start = getTimeStamp('2017-08-10');
          var end = getTimeStamp('2017-08-10 23:59:59');
          
          console.log(start + ' - ' + end);

          我在 NodeJS 上使用它,我们有时区“澳大利亚/悉尼”。所以,我不得不在 .env 文件中添加这个:

          TZ = 'Australia/Sydney'
          

          以上等价于:

          process.env.TZ = 'Australia/Sydney'
          

          【讨论】:

            【解决方案9】:

            你可以使用 Date.parse() 方法。

            Date.parse($("#yourCustomDate).val())
            

            Date.parse("03.03.2016") 输出-> 1456959600000

            Date.parse("2015-12-12") 输出-> 1449878400000

            【讨论】:

            【解决方案10】:
            var date = new Date('2012.08.10');
            var unixTimeStamp = Math.floor(date.getTime() / 1000);
            

            在这种情况下,重要的是只返回一个整数(所以简单的除法不会这样做),并且只返回实际经过的秒数(这就是为什么这段代码使用Math.floor() 而不是Math.round())。

            【讨论】:

              【解决方案11】:

              将时间戳转换为 unix 时间戳。

              const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)

              获取转换后的时间戳 const TimeStamp = new Date(date*1000).getTime(); //1513787412000

              【讨论】:

                猜你喜欢
                • 2020-01-09
                • 2020-10-19
                • 2020-12-23
                • 2016-04-24
                • 2012-07-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多