Bazı zamanlar ilgili özellikler üzerinde çalışıyorum ve her zaman UTC zamanlarını kullanıp zaman damgalarını tutarlılık için tamsayı olarak depolamayı tercih ediyorum.PHP mktime ve saat dilimi
Ancak, mktime
kullandığımda, o anda ayarlanan saat diliminin mktime
dönüş değeri üzerinde bir etkisi olduğunu fark ettim.
Ancakverilen argümanları unix zaman damgasını döner: belgelerine ben
mktime
Dönemden beri saniye sayısını döndürmek gerekiyordu anlıyoruz. Bu zaman damgası, Unix Epoch (1 Ocak 1970 00:00:00 GMT) ile belirtilen süre arasındaki saniye sayısını içeren uzun bir tamsayıdır. http://php.net/manual/en/function.mktime.php
mktime
anda ayarlanır saat dilimini içeren gibi görünüyor. Aşağıdaki kodu kullanırken:
1451606400 - 1451566800 = 39600/(60*60) = 11
:
1451606400
1451566800
Hangi exacly 11 saat fark gibi görünüyor:
date_default_timezone_set('UTC');
$time = mktime(0, 0, 0, 1, 1, 2016);
echo "{$time}\n";
date_default_timezone_set('Australia/Sydney');
$time = mktime(0, 0, 0, 1, 1, 2016);
echo "{$time}\n";
Ben iki zaman aynı gibi VALES ama görünüşe değiller beklenebilir
mktime
ile ilgili doğru bir şekilde neyi anlamadım ve/veya saat dilimi neden mktime
kullanılırken hesaba katılır?
Ouch. Bu oldukça berbat. Tek yapmaları gereken, her zaman UTC'yi her zaman işlevinde kullanmak ve sadece "gösteriliyor" zamanları olduğunda bir zaman dilimi kullanmaktı. Sanırım PHP'nin "geçmişi" nedeniyle olduğu gibi ... Cevabınız için teşekkürler! – Luke