Nasıl ben sadece Zend_Date Ofset dilimimi değiştirebilirim?

3 Cevap php

Ben bir zamanlama uygulaması tarihleri ​​/ kez yönetmek için Zend_Date kullanıyorum.

Ben kullanıcının dilimimi belirlemek mümkün olduğum tek yolu sadece bir Ofset dilimimi verir Javascript yoluyla olmaktadır. Zend_Date sadece 'Amerika / New_York' biçiminde TimeZones almak gibi görünüyor.

Bu formatta kullanıcıların dilimini almak ya Zend_Date ile Ofset dilimimi ayarlamak için bir yolu var mı?

Teşekkürler!

3 Cevap

Nicky,

Eğer gerçekten nesneler bunun için de işe PHP içsel DateTime ve DateTimeZone gibi bu için Zend_Date gerekmez; Eğer gerçekten Zend_Date kullanmak gerekiyorsa, ancak ben doğru yönde işaret edebilir.

Aşağıdaki örneklere bakın

  1. $ Tarih = new Zend_Date (1234567890, false, $ yerel);
  2. $ Tarih-> toString ... (bkz: http://framework.zend.com/manual/en/zend.date.constants.html daha fazla bilgi için)
  3. Use the following Constants for ISO 8601: (Z = Difference of time zone [+0100])

Bu olması gereken yere götürmeliyiz. Eğer takılıyorum kod örnekleri gönderin.

Sen ofset kullanıcıların timezone bir çerez ayarlamak için javascript kullanabilirsiniz.

Sonra php ofset tarafından endeksli bir dizi olabilir

$timezones = array (

    '-1' => 'adfas/adsfafsd',
    '-2' => 'adsfasdf/asdfasdf'
    ...
);

$date->setTimezone( $timezones[$_COOKIE['tz_offset']] );

Sen timezone_name_from_abbr işlevini kullanabilirsiniz:

$javascript_offset = '-1';
$zone = timezone_name_from_abbr('', $javascript_offset * 3600, 0);

Ayrıca DST dikkate almak gerekir. Daha fazla bilgi için this example bakabilirsiniz.