我有一个我希望转换为毫秒的日期字符串。虽然我不知道这是什么格式。
var time = "20150605-16:34:53.506";
我不确定如何将这段时间用于毫秒。
我试过
new Date(time);
但它只是给了我一个错误,它不是一个有效的时间。
如果可能的话,我想在没有图书馆的情况下实现这一目标。
答案 0 :(得分:2)
您可以这样做:
var time = "20150605-16:34:53.506";
var date = new Date(time.replace(/(\d{4})(\d{2})(\d{2})-(.*)/, '$1-$2-$3T$4Z'));
var ms = date.getTime();
console.log(ms);

这个正则表达式看起来很奇怪,但它可以做到这一点。
答案 1 :(得分:1)
您可以通过几个简单的步骤将该字符串转换为有效的日期字符串,目标是从中获取:
20150605-16:34:53.506
要:
2015-06-05T16:34:53.506
var time = '20150605-16:34:53.506';
time = time.replace('-', 'T');
time = time.slice(0, 4) + '-' + time.slice(4, 6) + '-' + time.slice(6);
var milliseconds = new Date(time).getTime();
console.log(milliseconds); // 1433540093506

答案 2 :(得分:1)
这是蛮力方法:
var time = "20150605-16:34:53.506";
var year = parseInt(time.substr(0, 4), 10);
var month = parseInt(time.substr(4, 2), 10) - 1;
var day = parseInt(time.substr(6, 2), 10);
var hour = parseInt(time.substr(9, 2), 10);
var minute = parseInt(time.substr(12, 2), 10);
var second = parseInt(time.substr(15, 2), 10);
var mille = parseInt(time.substr(18, 3), 10);
var date = new Date(year, month, day, hour, minute, second, mille);
console.log(date);
> Fri Jun 05 2015 16:34:53 GMT-0700 (PDT)
有关详细信息,请参阅MDN Date。请注意,月份是奇数 - 它与零年不同,不同年份和日期(因此解析月份为-1):
月
表示月份的整数值,从1月的0开始到12月的11。
答案 3 :(得分:1)
根据this,日期是某种ISO 8601格式(它只是说标准分隔符是' T')。
Date.parse()不会立即接受您的格式,您必须进行2次更改:更改短划线' - '对于一个' T'并分开日期
str = "20150605-16:34:53.506";
formattedStr = str.slice(0,4) + '-' + str.slice(5,7) + '-' + str.slice(8).replace('-', 'T');
Date.parse(formattedStr);
答案 4 :(得分:0)
将字符串更改为JavaScript识别的格式(它接受RFC2822 / IETF日期语法)。然后使用:
var time = Date.parse(yourFormattedTimeString);
然后:
var milliseconds = time.getMilliseconds();
答案 5 :(得分:0)
您尝试解析为日期的字符串不是javascript识别的格式,这是一种格式,以及如何获得毫秒值:
var d = new Date("June 05, 2015 16:34:53:506");
var n = d.getMilliseconds();`