将DateTime的字符串转换为javascript日期的问题



我有一个包含DateTime为"20140121230000"的字符串。如果我尝试将其转换为日期。

var oDate = new Date(20140121230000);
我得到的年份是2068年!是否有办法将其转换为2014年01月21日时间23:00:00的日期?

是否有可能在不做任何解析的情况下直接转换这个字符串?

除非使用库,否则没有办法在不手动分割字符串的情况下转换值。

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);

您使用的构造函数从1970年1月1日起占用毫秒,尝试使用:

 var oDate = new Date(2014, 01, 21, 23, 00, 00, 00);

注意,01月将是Feb,而不是jan

用字符串构造Date对象

new Date(string)

期望Date.parse能够理解的日期字符串:

  • ISO 8601(如2011-10-10T14:48:00)或
  • RFC2822(例如,Mon, 25 Dec 1995 13:30:00 GMT)

有关Date和Date.parse的更多信息,请参阅MDN。

您的格式不被识别。

  1. 重新格式化字符串以适合上面的一种格式
  2. 手动分割字符串并使用单独的参数调用Date,如new Date(year, month, day, hour, minute, second, millisecond)
  3. 使用moment.js这样的库

使用moment.js将看起来像这样:

moment("20140121230000", "YYYYDDMMHHmmss")

有关格式语法的更多信息,请参阅moment.js string + format

给定'20140121230000',您可以将其拆分为位并将其提供给Date构造函数:

function parseSToDate(s) {
  var b = s.match(/dd/g) || [];
  return new Date( (b[0] + b[1]), --b[2], b[3], b[4], b[5], b[6]);
}
console.log(parseSToDate('20140121230000'));

相关内容

  • 没有找到相关文章