在JS中将String转换为日期格式

时间:2014-12-31 12:06:47

标签: javascript

我需要转换包含日期和时间的字符串,如下所示

"27-JAN-15 08.30.00.000000 AM"

当我使用new Date("27-JAN-15 08.30.00.000000 AM")时,我收到的错误为Invalid Date

请帮忙。

由于

3 个答案:

答案 0 :(得分:2)

var dateVal = "27-JAN-15 08.30.00.000000 AM";
console.log(new Date(dateVal.split(".").join(":")));

答案 1 :(得分:1)

var myDate = function(dateString) {
    var dateString = dateString || "27-JAN-15 08.30.00.000000 AM" // An example
    var newDate = new Date(dateString.split(" ")[0]);
    var hours = dateString.split(" ")[2]==="AM" ? dateString.split(" ")[1].split(".")[0] : parseInt(dateString.split(" ")[1].split(".")[0], 10) + 12;
    newDate.setHours(hours);
    newDate.setMinutes(dateString.split(" ")[1].split(".")[1]);
    newDate.setSeconds(dateString.split(" ")[1].split(".")[2]);
    newDate.setMilliseconds(dateString.split(" ")[1].split(".")[3]);
    return newDate;
}

答案 2 :(得分:0)

手动解析是最佳选择。

"27-JAN-15 08.30.00.000000 AM"

首先split你在“空格”处串起来,给你

"27-JAN-15"

"08.30.00.000000"

"AM"

现在您可以在split处获取日期部分和-,然后为您提供

"27"

"JAN"

"15"

现在,您可以使用object作为查找表来转换月份,以便为您提供数值。

所以JAN会给你0,你现在有

"27"

"0"

"15"

年份部分现在不明确,Date将取0到99之间的值并映射到1900年到1999年。所以您需要根据数据决定如何处理这个问题。

现在最后两个字符串,你有

"08.30.00.000000"

"AM"

"AM""PM"可以忽略,因为时间是24小时格式,所以现在split时间字符串.,给你

"08"

"30"

"00"

"000000"

Date构造函数只处理毫秒级的精确度,因此您可以将"000000"slice的前三位数字给出

"000"

现在获取您手动解析的所有部分,并将它们与date构造函数一起使用

new Date(year, month[, day[, hour[, minute[, second[, millisecond]]]]]);

所以,

new Date("15", "0", "27", "08", "30", "00", "000");

您现在将拥有一个javascript本地date对象,而不会出现跨浏览器parse不一致。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

如果您的日期是UTC,那么您可能想要使用

Date.UTC()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC