Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅将时间字符串转换为时间戳_Javascript_Timestamp - Fatal编程技术网

Javascript 仅将时间字符串转换为时间戳

Javascript 仅将时间字符串转换为时间戳,javascript,timestamp,Javascript,Timestamp,因此,我有一个时间字符串,它将时间显示为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.getSeco

因此,我有一个时间字符串,它将时间显示为
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
变量显示NaN值


请告诉我我做错了什么。

解析日期在JavaScript中是一个难题,因为没有广泛的本机支持。但是,您可以通过依赖Date对象的日期(年、月、日[、小时、分钟、秒、毫秒])构造函数签名来执行以下操作

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"]

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

var日期;
函数myFunction(){
var d=新日期();
var h=addZero(d.getHours(),2);
var m=addZero(d.getMinutes(),2);
var s=addZero(d.getSeconds(),2);
var ms=addZero(d.getmillizes(),3);
var day=d.getDate();
var month=d.getMonth()+1;//getMonth返回一个介于0和11之间的整数
var year=d.getFullYear();
var maindate=`${day}-${month}-${year}${h}:${m}:${s}.${ms}`;
var datestring=Date.parse(maindate)
log(“数据:”,日期字符串);
}
myFunction();

因为我想得到结果中的
时间戳。我得到了我发布的上述问题的答案

这是最终的代码,它给了我预期的结果

  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();
函数addZero(x,n){
while(x.toString().长度

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

为此,您不再需要
addZero()
函数,也不需要delacre
var date全局

var d=新日期();
var h=d.getHours();
var m=d.getMinutes();
var s=d.getSeconds();
var ms=d.getmillizes();
var day=d.getDate();
变量月份=d.getMonth()+1;
var year=d.getFullYear();
var maindate=日+'-'+月+'-'+年+''+h+':'+m+':'+s+'.+ms;
var datestring=Date.parse(maindate);
log(“数据:”,日期字符串);

看一看,也许这对你来说也是一个干净而简单的解决方案——这取决于你的环境。

你的
addZero
函数中有什么类似的问题:查看moment.js()库。它可以轻松地处理日期。parse(maindate)
返回自1970年1月1日00:00:00 UTC以来的毫秒数。通过给它小时、分钟、秒和毫秒,你期望它返回什么?自1970年1月1日以来的毫秒数?如果你想要时间戳,你需要一个完整的日期,包括天、月和年。你可以更新你的答案,也有毫秒数据。我无法配置它。