Временные зоны

Тема в разделе "Как сделать...", создана пользователем SocMaster, 1 дек 2014.

Статус темы:
Закрыта.
  1. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    213
    Симпатии:
    47
    Поставили задачу сделать выбор временной зоны в настройках на сайте.
    Раньше с этим не сталкивался, потому не понятно как это делается
    есть вот такая функция которая выводит везде на сайте даты
    PHP:
        function rus_month($date){
            
    $Month_r = array(
                
    "01" => "января",
                
    "02" => "февраля",
                
    "03" => "марта",
                
    "04" => "апреля",
                
    "05" => "мая",
                
    "06" => "июня",
                
    "07" => "июля",
                
    "08" => "августа",
                
    "09" => "сентября",
                
    "10" => "октября",
                
    "11" => "ноября",
                
    "12" => "декабря"
            
    );
            
    $d date('c',$date);
            
    $d explode('T',$d);
            
    $t explode('-',$d[0]);
            
    $t[2] = $t[2] - 0;
            
    $yr $t[2].' '.$Month_r[$t[1]].' '.$t[0];
            
    $t explode(':',$d[1]);
            
    $td $yr.' в '.$t[0].':'.$t[1];
            return 
    $td;
        }
    подскажите как временные зоны использовать тут?
     
  2. KPACHODAP

    KPACHODAP DELETED

    Регистр.:
    21 дек 2009
    Сообщения:
    639
    Симпатии:
    111


    а по подробнее можно а то не могу понять что иимено нужно вижу что время под буквой t разложено эксплойдом! что именно нужно в итоге получить?
     
  3. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    213
    Симпатии:
    47
    На входе timestamp на выходе должен получить время с учетом выбранной зоны, для примера возьмем зону Asia/Tokyo
    $dateTimeZoneJapan = new DateTimeZone("Asia/Tokyo");
    $dateTimeJapan = new DateTime($date, $dateTimeZoneJapan);

    var_dump($dateTimeJapan);
    делаю так, получаю
    object(DateTime)#23 (3) { ["date"]=> string(19) "7376-12-01 14:17:42"
    что за - 7376
     
  4. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    213
    Симпатии:
    47
    Сам додумался )
    PHP:
        function rus_month($date){
            
    $Month_r = array(
                
    "January" => "января",
                
    "February" => "февраля",
                
    "March" => "марта",
                
    "April" => "апреля",
                
    "June" => "июня",
                
    "May" => "мая",
                
    "July" => "июля",
                
    "August" => "августа",
                
    "September" => "сентября",
                
    "October" => "октября",
                
    "November" => "ноября",
                
    "December" => "декабря"
            
    );           
           
            
    $dt = new DateTime();
            
    $dt->setTimestamp($date);

            
    $dt->setTimezone(new DateTimeZone("UTC"));
            
    $would_be $dt->format('m F Y в H:i');
            return 
    str_replace(array_keys($Month_r), array_values($Month_r), $would_be);    
        }
    может кому пригодится. на входе timestamp на выходе дата: 12 декабря 2014 в 09:49
     
    latteo нравится это.
Статус темы:
Закрыта.