JavaScript - Date实例的Date.UTC结果

时间:2012-04-26 16:49:09

标签: javascript

我有一个图表库,它期待日期值,就好像我曾打过电话:

var utc = Date.UTC(2012, 1, 15);

但我的服务器正在返回日期字符串。给定日期字符串" 2/15/2012"是否有简单的方式来获得调用Date.UTC(2012, 1, 15);的相同结果?

我下面的内容有效,但我想知道是否有更简单的方法。

//correct result I'm shooting for
var utc = Date.UTC(2012, 1, 15);

//is there an easier way?
var d = new Date("2/15/2012");
var utc2 = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate());

console.log(utc, "  ===  ", utc2, (utc === utc2) ? "SWEET" : "DAMNIT");

3 个答案:

答案 0 :(得分:2)

你可以拆分传入的字符串(我知道,这很icky,但它是我能想到的唯一其他解决方案)。

var dstring = "2/15/2012".split("/");
var utc = Date.UTC(dstring[2], dstring[0]-1, dstring[1]);

本月的-1是抵消0个索引的月份。你甚至可以把它变成一个函数:

String.prototype.dateFromString = function() {
    var str = this.split("/");
    return [str[2], str[0]-1, str[1];
}

var dstring = "2/15/2012";
var utc = Date.UTC(dstring.dateFromString[0], dstring.dateFromString[1], dstring.dateFromString[2]);

答案 1 :(得分:2)

如果日期始终位于m/d/y(或者,至少,还没有时区)格式,您可以将' UTC'附加到其中并使用getTime

var mdy = "2/15/2012";
var utc = new Date(mdy + " UTC").getTime();

console.log(utc == Date.UTC(2012, 1, 15));

答案 2 :(得分:1)

一个班轮:

var utc = new Date(new Date('2012/02/30').toUTCString()).valueOf()