0

私が呼び出したかのように日付値を期待しているチャート ライブラリがあります。

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

しかし、私のサーバーは日付文字列を返しています。「2012 年 2 月 15 日」の日付文字列を指定して、呼び出しと同じ結果を得る簡単な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");
4

3 に答える 3

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));
于 2012-04-26T16:59:29.157 に答える
2

渡された文字列を分割することもできます (厄介なことですが、私が思いつく他の解決策はこれしかありません)。

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]);
于 2012-04-26T16:54:45.987 に答える
1

一発ギャグ:

var utc = new Date(new Date('2012/02/30').toUTCString()).valueOf()
于 2012-04-26T17:03:30.637 に答える