我有一个图表库,它期待日期值,就好像我曾打过电话:
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");
答案 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()