我需要转换包含日期和时间的字符串,如下所示
"27-JAN-15 08.30.00.000000 AM"
当我使用new Date("27-JAN-15 08.30.00.000000 AM")
时,我收到的错误为Invalid Date
。
请帮忙。
由于
答案 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