【问题标题】:How can I convert a date in Epoch to "Y-m-d H:i:s" in Javascript?如何将 Epoch 中的日期转换为 Javascript 中的“Y-m-d H:i:s”?
【发布时间】:2012-05-19 03:08:16
【问题描述】:

如何在纪元中转换以下日期:

1293683278

到以下可读日期:

2010-06-23 09:57:58

使用Javascript?

谢谢!

【问题讨论】:

    标签: javascript date transformation epoch date-conversion


    【解决方案1】:

    var timestamp = 1293683278;
    var date = new Date(timestamp * 1000);
    
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var seconds = date.getSeconds();
    
    console.log(year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds);

    查看 js 日期文档了解更多详情

    另一种方式:

    var timestamp = 1293683278;
    var date = new Date(timestamp * 1000);
    var iso = date.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/)
    
    console.log(iso[1] + ' ' + iso[2]);

    【讨论】:

    • 谢谢!奇怪的是,当我删除“* 1000”时它可以工作,但否则它会给我一些随机数..?
    • javascript 中的日期以微秒为单位。您确定您的时间戳正好有 10 位数字吗?
    • 我如何使用日期 2013-03-27 的 ISOstring 匹配获得像 20130327 这样的格式?
    • 试试iso[1].replace(/-/g, '') + ' ' + iso[2]
    • 经过一番谷歌搜索后,javascript 以毫秒为单位工作 :)
    【解决方案2】:

    您可以为此使用moment.js

    moment.unix(1293683278).format('YYYY-MM-DD HH:mm:ss');
    

    【讨论】:

      【解决方案3】:

      代码:

      var timestamp = 1293683278;
      var d = new Date(timestamp * 1000);
      
      console.log(
        d.getFullYear() + "-" +
        ("00" + (d.getMonth() + 1)).slice(-2) + "-" +
        ("00" + d.getDate()).slice(-2) + " " +
        ("00" + d.getHours()).slice(-2) + ":" +
        ("00" + d.getMinutes()).slice(-2) + ":" +
        ("00" + d.getSeconds()).slice(-2)
      );

      格式:YYYY-MM-DD HH:II:SS

      结果:2010-12-30 07:57:58

      演示:https://jsfiddle.net/NabiKAZ/9ycovfxt/

      注意:对于当前时间,只需使用:var d = new Date();

      【讨论】:

        【解决方案4】:

        在决定在您的项目中使用 Moment.js 之前,请考虑使用任何其他替代方案。

        Moment.js Project Status 所述。

        我们现在通常认为 Moment 是一个处于维护模式的遗留项目。它没有死,但它确实完成了

        此时,我建议使用date-fns library。它轻量级、简单,并且支持国际化。

        我真正喜欢 date-fns 的地方在于您只需声明您需要使用的模块。 这是我的示例代码:

        // Docs: https://date-fns.org/v2.23.0/docs/format
        import format from 'date-fns/format'
        import id from 'date-fns/locale/id'
        
        function formatTimeLocale(time) {
          return format(
            new Date(time),
            `EEEE, d MMM yyyy 'pukul' HH:mm`,
            {
              locale: id,
            }
          )
        }
        
        // This will return: Rabu, 15 Sep 2021 pukul 16:21
        const dateTime = formatTimeLocale(1631697689 * 1000)
        console.log(dateTime)
        

        【讨论】:

          【解决方案5】:

          /* Get timestamp */
          var timestamp = 1293683278;
          document.querySelector("#timestamp").innerHTML = "Timestamp: " + timestamp;
          
          /* Get milisecond from timestamp */
          var milisecond = 1293683278 * 1000;    
          document.querySelector("#milisecond").innerHTML = "Milisecond: " + milisecond;
            
          /* Separate milisecond */
          var datetime = new Date(milisecond);
          
          var year    = datetime.getFullYear();
          var month   = datetime.getMonth() + 1; // (0-11)
          var date    = datetime.getDate();
          var hour    = datetime.getHours();
          var minute  = datetime.getMinutes();
          var second  = datetime.getSeconds();
          
          document.querySelector("#datetime").innerHTML = "Datetime: " + 
            year + "-" + addZero(month) + "-" + addZero(date) + " " + 
            addZero(hour) + ":" + addZero(minute) + ":" + addZero(second);      
          
          // Add 0 if argument < 10
          function addZero(i) {
            if (i < 10) {
              i = "0" + i
            };  
            return i;
          }
          <p id="timestamp"><p>
          <p id="milisecond"><p>
          <p id="datetime"><p>

          【讨论】:

            【解决方案6】:

            我更喜欢这个简短的答案

            new Date().toJSON().split('.')[0].split('T').join(' ')
            

            【讨论】:

              猜你喜欢
              • 2011-10-24
              • 1970-01-01
              • 1970-01-01
              • 2013-05-12
              • 2023-03-08
              • 2012-07-21
              • 1970-01-01
              • 2010-12-23
              • 1970-01-01
              相关资源
              最近更新 更多