JavaScript-日期实例的Date.UTC结果

JavaScript-日期实例的Date.UTC结果,javascript,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

我有一个图表库,它期望日期值,就好像我调用了:

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

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

该月的-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将抵消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]);

如果日期始终为
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));

如果日期始终为
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));
一艘班轮:

var utc = new Date(new Date('2012/02/30').toUTCString()).valueOf()
一艘班轮:

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

适应以0为基础的月份不应该是
-1
?@Kolink:Hmm。。。让我想想。[计算]。。。是的,谢谢你的帮助。适应以0为基础的月份不应该是
-1
吗?@Kolink:Hmm。。。让我想想。[计算]。。。是的,谢谢你的帮助。宾果,这是一个很好的答案+1就是这样的时刻,我真的,真的很喜欢堆栈溢出不可靠。取决于区域设置,因为某些浏览器会尝试以D/M/Y(正确,IMO)格式解释它,但失败。@Kolink True。但是,如果i18n是一个真正的问题,那么首先不应该使用
m/d/y
d/m/y
。应该使用更广泛接受的格式,例如
md,y
y-M-d
。我对Elliot的答案投了赞成票,因为这强制了特定的格式,而不是让浏览器决定。这就是我真正想说的。宾果,这是一个很好的答案+1就是这样的时刻,我真的,真的很喜欢堆栈溢出不可靠。取决于区域设置,因为某些浏览器会尝试以D/M/Y(正确,IMO)格式解释它,但失败。@Kolink True。但是,如果i18n是一个真正的问题,那么首先不应该使用
m/d/y
d/m/y
。应该使用更广泛接受的格式,例如
md,y
y-M-d
。我对Elliot的答案投了赞成票,因为这强制了特定的格式,而不是让浏览器决定。这才是我真正想要的。