2

この日付を API から UTC ミリ秒に変換するのに最も苦労しています。現在、日付を表示していますが、7時間先を表示しており、データがない翌日に進んでいます。フォーマットの例を次に示します。

2012 年 8 月 31 日 午前 9:00:00

私は現在このコードを持っています

var formattedDate = new Date(data[i].Time);
formattedDate = formattedDate.getTime();

正しい値の型を返しているように見えますが、日付が間違っています。getUTCMilliseconds() も試してみましたが、0 が返されます。

編集: jsfiddle の例: http://jsfiddle.net/b2NK6/

4

3 に答える 3

2

現地時間ではなく、UTC 時間の生のタイムスタンプが必要ですか?

比較:

(new Date(Date.UTC(2012, 7, 31, 9, 0, 0, 0))).getTime(); /* month 7 is August */

(new Date(Date.parse("8/31/2012 9:00:00 AM"))).getTime();

文字列を解析すると (2 番目の例)、日付オブジェクトの作成時にローカルのタイムゾーン情報が適用されます。タイムゾーン -0700 にいる場合、作成される日付は実際には UTC 午後 4 時に対応します。

しかし、UTC 値を指定していることを明示して日付オブジェクトを作成すると、UTC の午前 9:00 になります。これは、タイムゾーン -0700 の午前 2:00 に対応します。

より明確で正確なコード例を提供するために編集されました。

于 2012-09-05T01:55:18.983 に答える
0

HighStocksは、日付がUTC-真夜中の日付境界に揃えられることを期待しています。

チャートが(時間コンポーネントなしで)日付のみを扱っていると仮定すると、ここで使用できるトリックがあります。

  1. originalDate.getTime()1970年1月1日午前0時からのミリ秒数を取得するために実行します1362286800000
  2. ミリ秒数をで割って、1970年1月1日午前0時からの日数(1000*60*60*24)を取得します。15767.208333333334
  3. Math.round()数値を最も近いUTC午前0時に丸めます。例:15767
  4. 数値にを掛けて(1000*60*60*24)、ミリ秒スケールに戻します1362268800000。例:

最終的な式は次のとおりです。

var utcMidnight=new Date(Math.round(anyZoneMidnight.getTime()/86400000)*86400000)
于 2013-02-26T01:52:17.410 に答える
0
var dateString = "8/31/2012 9:00:00 AM";  // assuming this is expressed in local time

var millisecondsSinceTheEpoch = (new Date(dateString)).valueOf();  // 1346418000000

var isoString = (new Date(millisecondsSinceTheEpoch)).toISOString();  // 2012-08-31T13:00:00.000Z

// Note: example return values from a computer on U.S. Eastern Daylight Time (-4:00).

W3Schoolsから:

valueOf() メソッドは、Date オブジェクトのプリミティブ値を返します。

注:プリミティブ値は、UTC 1970 年 1 月 1 日の午前 0 時からのミリ秒数として返されます。

Date オブジェクトの包括的な概要については、 W3Schools も参照してください。

于 2012-09-05T02:14:58.333 に答える