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

时间:2014-05-14 09:46:53

标签: javascript datetime datetime-format

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

var oDate = new Date(20140121230000);

我今年的年份是2068年!有没有办法将其转换为2014年,月01日期21时间23:00:00的日期?

是否可以直接转换它而不在字符串中进行任何解析?

4 个答案:

答案 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可以理解的日期字符串:

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

有关DateDate.parse的详细信息,请参阅MDN。

您的格式不是公认的格式。你可以

  1. 重新格式化字符串以适合上述格式之一
  2. 手动拆分字符串并使用各个参数调用Date,如new Date(year, month, day, hour, minute, second, millisecond)
  3. 使用像moment.js
  4. 这样的库

    使用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'));