2011-09-13 19 views
20

以下のコードを見てください。以下の変数targetTimeにタイムゾーンの差を加算または減算する最適な方法は何ですか? GMTのタイムゾーン値は、この形式のDBから取得されます。ロンドン時間は1.00、Pasific時間は-8.00などです。タイムゾーンの差分をjavascriptに加算または減算する日付

コードは次のようになります。

date = "September 21, 2011 00:00:00"; 
targetTime = new Date(date); 

答えて

39

ローカル分でGMTからのオフセットを返しますDate.getTimezoneOffsetを使用することができます。期待どおりの正負の値を返します。したがって、GMT-5は300、GMT + 1は-60です。私の作品

var date = "September 21, 2011 00:00:00"; 
var targetTime = new Date(date); 
var timeZoneFromDB = -7.00; //time zone value from database 
//get the timezone offset from local time in minutes 
var tzDifference = timeZoneFromDB * 60 + targetTime.getTimezoneOffset(); 
//convert the offset to milliseconds, add to targetTime, and make a new Date 
var offsetTime = new Date(targetTime.getTime() + tzDifference * 60 * 1000); 
+1

これが正しいだろうが、それはあなたの国で夏時間がどのようであれば、あなたGMTは+2を言っていた場合、今、それが今になります+ 1 – halliewuud

+5

getTimezoneOffset夏時間のアカウントです。 GMT-5の米国東部時間帯ですが、夏時間のGMT-4です。私のブラウザでgetTimezoneOffsetを呼び出すと、私はGMT-4である240を取得します。それは、もちろん、現地時間での夏時間の処理だけを処理します。 DBからのタイムゾーンオフセットは、バックエンドのDSTに対して調整する必要があります。 – alexp

6

シンプルな機能:

adjustForTimezone(date:Date):Date{ 
    var timeOffsetInMS:number = date.getTimezoneOffset() * 60000; 
    date.setTime(date.getTime() - timeOffsetInMS); 
    return date 
} 
関連する問題