2011-09-13 13 views
20

Aşağıdaki kodu inceleyin. Aşağıdaki targetTime değişkenine zaman dilimi farkları eklemek veya çıkarmak için en iyi yaklaşım nedir. GMT saat dilimi değerleri DB'den şu biçimde gelir: Londra saati için 1.00, Pasif süre için -8.00.zaman dilimi farkını javascript'e ekleyin veya çıkartın Tarih

Kod şöyle görünür:

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

cevap

39

yerel dakika içinde GMT ofset döner Date.getTimezoneOffset kullanabilirsiniz. Beklediğiniz karşıt işaretiyle değeri döndürdüğünü unutmayın. Yani GMT-5 300 ve GMT + 1 -60'dır. benim için çalışıyor

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

bu doğru olacaktır ama ülkenizde zaman tasarrufu günışığı buysa ve GMT +2 demek olsaydı şimdi, artık olurdu + 1 – halliewuud

+5

getTimezoneOffset gün ışığından yararlanma saati hesaplar. Normalde GMT-5 olan ABD Doğu saat dilimindeyim, ancak gün ışığından yararlanmada GMT-4'üm. Eğer şimdi tarayıcımda getTimezoneOffset'i çağırırsam, GMT-4 olan 240 tane alırım. Bu, tabii ki, sadece yerel zaman için gün ışığından yararlanır. DB'den gelen zaman dilimi ofseti arka uçta DST için ayarlanmalıdır. – alexp

6

Basit fonksiyonu:

adjustForTimezone(date:Date):Date{ 
    var timeOffsetInMS:number = date.getTimezoneOffset() * 60000; 
    date.setTime(date.getTime() - timeOffsetInMS); 
    return date 
} 
İlgili konular