在JS中取消格式化日期 - 转换为毫秒

时间:2015-06-22 20:47:13

标签: javascript date

我有一个我希望转换为毫秒的日期字符串。虽然我不知道这是什么格式。

var time = "20150605-16:34:53.506";

我不确定如何将这段时间用于毫秒。

我试过

new Date(time); 

但它只是给了我一个错误,它不是一个有效的时间。

如果可能的话,我想在没有图书馆的情况下实现这一目标。

6 个答案:

答案 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();`