【问题标题】:convert only time String to Timestamp仅将时间字符串转换为时间戳
【发布时间】:2020-01-08 08:37:33
【问题描述】:

所以我有一个时间字符串,它显示时间为h:m:s.ms 但问题是我想将它们转换为显示NaN 值的时间戳值。

我正在使用Date.parse() 将时间转换为时间戳。

这是我尝试过的代码。

var date;
function myFunction() {
  var d = new Date();
  var h = addZero(d.getHours(), 2);
  var m = addZero(d.getMinutes(), 2);
  var s = addZero(d.getSeconds(), 2);
  var ms = addZero(d.getMilliseconds(), 3);
  var maindate = h + ":" + m + ":" + s + "." + ms ;
  var datestring = Date.parse(maindate)
  var data = Math.random(0,1); 
  console.log("Date : ", maindate) ;
  console.log("Data : ", data);
 }
  myFunction();

您可以在控制台窗口中看到date 和data。

这里的date 变量显示的是 NaN 值。

请告诉我我做错了什么。

【问题讨论】:

  • addZero 函数中有什么
  • 此链接中的类似问题:stackoverflow.com/questions/16072056/…
  • 查看 moment.js (momentjs.com) 库。它可以轻松处理日期
  • Date.parse(maindate) 返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。你期望它通过给它小时、分钟、秒和毫秒来返回什么?自 1970 年 1 月 1 日以来的毫秒数?
  • 如果你想要一个时间戳,你需要一个完整的日期,包括日月和年

标签: javascript timestamp


【解决方案1】:

如果你想要一个时间戳,你需要一个完整的时间,包括日、月和年

var date;

function myFunction() {
  var d = new Date();
  var h = addZero(d.getHours(), 2);
  var m = addZero(d.getMinutes(), 2);
  var s = addZero(d.getSeconds(), 2);
  var ms = addZero(d.getMilliseconds(), 3);

  var day = d.getDate();
  var month = d.getMonth() + 1; // getMonth returns an integer between 0 and 11
  var year = d.getFullYear();  

  var maindate = `${day}-${month}-${year} ${h}:${m}:${s}.${ms}`;
  var datestring = Date.parse(maindate)
  console.log("Data : ", datestring);
 }
  myFunction();

【讨论】:

    【解决方案2】:

    解析日期在 JavaScript 中是一件痛苦的事,因为没有广泛的原生支持。但是,您可以通过依赖 Date 对象的 Date(year, month, day [, hour, minute, second, millisecond]) 构造函数签名来执行以下操作。

    var dateString = '17-09-2013 10:08',
        dateTimeParts = dateString.split(' '),
        timeParts = dateTimeParts[1].split(':'),
        dateParts = dateTimeParts[0].split('-'),
        date;
    
    date = new Date(dateParts[2], parseInt(dateParts[1], 10) - 1, dateParts[0], timeParts[0], timeParts[1]);
    
    console.log(date.getTime()); //1379426880000
    console.log(date); //Tue Sep 17 2013 10:08:00 GMT-0400
    

    您还可以使用带有捕获组的正则表达式来解析一行中的日期字符串。

    var dateParts = '17-09-2013 10:08'.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/);
    
    console.log(dateParts); // ["17-09-2013 10:08", "17", "09", "2013", "10", "08"]
    

    【讨论】:

    • 您能否更新您的答案以获取毫秒数据。我无法配置它。
    【解决方案3】:

    因为我想得到 timestamp 的结果。我得到了我发布的上述问题的答案

    这是给我预期结果的最终代码。

      function addZero(x,n) {
      while (x.toString().length < n) {
        x = "0" + x;
      }
      return x;
    }
    
    var date;
    function myFunction() {
      var d = new Date();
      var day = d.getDate();
      var month = d.getMonth() + 1; // Since getMonth() returns month from 0-11 not 1-12
      var year = d.getFullYear();
      var h = addZero(d.getHours(), 2);
      var m = addZero(d.getMinutes(), 2);
      var s = addZero(d.getSeconds(), 2);
      var ms = addZero(d.getMilliseconds(), 3);
      var maindate = year +"-" + day + "-" + month +" "+ h + ":" + m + ":" + s + "." + ms ;
       var datestring = Date.parse(maindate)
      var data = Math.random(0,1); 
      console.log("Date : ", datestring) ;
      console.log("Data : ", data);
     }
    
        myFunction();
    

    我还必须包括日月和年的值。我在答案中更新了。其余代码工作正常。

    【讨论】:

      【解决方案4】:

      为此,您不再需要 addZero() 函数,也没有必要在全局范围内声明 var date;。

      var d = new Date();
      var h = d.getHours();
      var m = d.getMinutes();
      var s = d.getSeconds();
      var ms = d.getMilliseconds();
      var day = d.getDate();
      var month = d.getMonth() + 1;
      var year = d.getFullYear();  
      
      var maindate = day + '-' + month + '-' + year + ' ' + h + ':' + m + ':' + s + '.' + ms;
      var datestring = Date.parse(maindate);
      
      console.log("Data : ", datestring);
      

      看看momentjs.com,也许这对您来说也是一个干净简单的解决方案 - 取决于您的环境。

      【讨论】:

        猜你喜欢
        • 2020-11-22
        • 2019-07-01
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多