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()
函数,也不需要delacrevar 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日以来的毫秒数?如果你想要时间戳,你需要一个完整的日期,包括天、月和年。你可以更新你的答案,也有毫秒数据。我无法配置它。