date_default_timezone soru

2 Cevap

Ben sunucu timezone göre ABD genelinde saat dilimleri farklılıkları hesaplamak oldukça uzun bir fonksiyon yazdım. I () default_timezone_set kullanarak benim işlevi hesaplar geri aynı verileri alabilirsiniz fark etmişsinizdir. Ben bu başka bir yerde başka bir istek benim app içinde oluşan ise, o zaman yanlış kullanılan bir küresel düzeyde ve zaman değişiklikleri korkuyorum çünkü default_timezone_set işlevi kullanmak için değil seçtiniz; bu, default_timezone_set fonksiyonunu kullanarak o anda hesaplanır zamandır.

Birisi bana bu doğrulamak miyim? Ben sadece yanlış zamanlarda diğer fonksiyonlarında kullanılan olma olasılığı hakkında endişelenmenize gerek kalmadan timezone_set işlevini kullanabilir miyim? Bu açıktır umuyoruz.

2 Cevap

PHP ne timezone date_default_timezone_set() yokluğunda kullanmayı belirleyen nasıl bir göz atmalısınız. Bu date_default_timezone_get() fonksiyonu altında tanımlanıyor.

Eğer date_default_timezone_set() kullanmıyor iseniz Temel olarak, o PHP {altında listelenen diğer ayarlardan birini ayarlamış oldu sürece, zaten tüm tarih işlevleri için varsayılan zaman dilimi olarak sunucu dilimini kullanarak büyük olasılıkla [(1)]}.

Eğer özel date_default_timezone_set() kullanarak dilimini ise, o zaman kod oldukça sunucu zaman dilimi sizin için karar icar daha kullanacak diliminin emin yapıyoruz.

Eğer sunucu timezone kullanmak istiyorsanız, o zaman sadece date_default_timezone_set() kullanarak sunucu timezone timezone ayarlamak için iyi bir uygulama ve tüm belirsizlik kaldırılır.

Yani, kısa cevap için çok geç, ama kısa cevabı evet, güvenle date_default_timezone_set() kullanmak gerekir olduğunu.

PHP zaten saat dilimleri arasındaki uzaklıklar hesaplamak için bir işlevi vardır:

timezone_offset_get()

PHP kılavuzda altında, örnek kullanım durumunda gösterilir. timezone_offset_get(). Burada iki saat dilimleri arasında ofset süresini hesaplamak için nasıl bir örnektir.

$offset = get_timezone_offset('America/Los_Angeles','America/New_York'); //result is 10800 (3 hours)
$offset = get_timezone_offset('America/Los_Angeles'); //compares against default server timezone

Saniye ofset aldıktan sonra, yapmanız gereken ne hesaplamaları yapabilirsiniz.


Varsayılan saat dilimleri ayarlanmasına ilişkin yapıyor hakkında gitmek için iki yol vardır.

  1. Varsayılan dilimini ayarlamak için php.ini ayarlayın (php.ini dosyasında aşağıdaki satırı ekleyin)

    date.timezone = "Sizin / Dilimi"

  2. (Bahsedilen date_default_timezone_set("Your/Timezone") kullanarak) zamanında varsayılan zaman dilimini ayarlayın

Depending on the server setup. Chaning the php.ini may not take effect due to php.ini precedence. There may be other php.ini somewhere in the server that takes precedence than the one you are editing