Bir süredir bununla mücadele ediyorum. Epoch'u bir tarih nesnesine dönüştürmeye çalışıyorum. Epoch bana UTC olarak gönderiliyor. Ne zaman new Date()
e bir epoch geçerseniz, bunun yerel epoch olduğunu varsayar. Bir UTC nesnesi oluşturmayı denedim, sonra onu uygun çağa ayarlamak için setTime()
kullanmayı denedim, ancak yararlı görünen tek yöntem toUTCString()
ve dizeler bana yardımcı olmuyor. Bu dizeyi yeni bir tarihe geçirirsem, UTC olduğunu fark etmesi gerekir, ancak fark etmiyor.
new Date( new Date().toUTCString() ).toLocaleString()
Bir sonraki denemem, yerel geçerli dönem ile UTC geçerli dönemi arasındaki farkı elde etmeye çalışmaktı, ancak bunu da elde edemedim.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
Bana sadece çok küçük farklar veriyor, 1000'in altında, bu da milisaniye cinsinden.
Öneriniz var mı?
Sadece bir UTC dizesini "yerel" dizeye dönüştürmek mi istiyorsunuz? Yapabilirsin:
var utc_string = '2011-09-05 20:05:15';
var local_string = (function(dtstr) {
var t0 = new Date(dtstr);
var t1 = Date.parse(t0.toUTCString().replace('GMT', ''));
var t2 = (2 * t0) - t1;
return new Date(t2).toString();
})(utc_string);
EDIT
var utcDate = new Date(incomingUTCepoch);
var date = new Date();
date.setUTCDate(utcDate.getDate());
date.setUTCHours(utcDate.getHours());
date.setUTCMonth(utcDate.getMonth());
date.setUTCMinutes(utcDate.getMinutes());
date.setUTCSeconds(utcDate.getSeconds());
date.setUTCMilliseconds(utcDate.getMilliseconds());
EDIT düzeltildi
Amjad, iyi fikir ama kötü uygulanmış. Deneyin
Date.prototype.setUTCTime = function(UTCTimestamp) {
var UTCDate = new Date(UTCTimestamp);
this.setUTCFullYear(UTCDate.getFullYear(), UTCDate.getMonth(), UTCDate.getDate());
this.setUTCHours(UTCDate.getHours(), UTCDate.getMinutes(), UTCDate.getSeconds(), UTCDate.getMilliseconds());
return this.getTime();
}