我有一个包含DateTime为“20140121230000”的字符串。如果我尝试将其转换为日期。
var oDate = new Date(20140121230000);
我今年的年份是2068年!有没有办法将其转换为2014年,月01日期21时间23:00:00的日期?
是否可以直接转换它而不在字符串中进行任何解析?
答案 0 :(得分:1)
您使用的构造函数自1970年1月1日起需要毫秒,请尝试使用:
var oDate = new Date(2014, 01, 21, 23, 00, 00, 00);
注意,第01个月将是2月,而不是1月。
答案 1 :(得分:1)
除非您使用library,否则无法在不手动拆分字符串的情况下转换该值。
var year = +oDate.slice( 0, 4);
var month = +oDate.slice( 4, 2) - 1; // Month is zero-based.
var day = +oDate.slice( 6, 2);
var hour = +oDate.slice( 8, 2);
var minute = +oDate.slice(10, 2);
var second = +oDate.slice(12, 2);
// This will interpret the date as local time date.
var date = new Date(year, month, day, hour, minute, second);
// This will interpret the date as UTC date.
var utcDate = Date.UTC(year, month, day, hour, minute, second);
答案 2 :(得分:0)
使用字符串构建Date对象
new Date(string)
需要Date.parse
可以理解的日期字符串:
2011-10-10T14:48:00
)或Mon, 25 Dec 1995 13:30:00 GMT
)有关Date和Date.parse的详细信息,请参阅MDN。
您的格式不是公认的格式。你可以
Date
,如new Date(year, month, day, hour, minute, second, millisecond)
使用moment.js看起来像这样:
moment("20140121230000", "YYYYDDMMHHmmss")
有关格式语法的详细信息,请参阅moment.js string + format。
答案 3 :(得分:0)
给定'20140121230000'
,您可以将其拆分为位并将其提供给Date构造函数:
function parseSToDate(s) {
var b = s.match(/\d\d/g) || [];
return new Date( (b[0] + b[1]), --b[2], b[3], b[4], b[5], b[6]);
}
console.log(parseSToDate('20140121230000'));