2010-12-16 1 views
11

Я хочу получить текущее время US/Eastern timezone. Как я могу это достичь.php get US/Eastern Текущее время

Я пробовал следующий код, но он отображает мое системное время.

<?php 
    date_default_timezone_set('US/Eastern'); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    //print "&time2=".$secs."&time1=".$mins."&time0=".$hrs; 
?> 

Я использую этот скрипт со вспышкой, поэтому прокомментировал строку «печать».

+1

Можете ли вы попробовать вызвать `echo date_default_timezone_get()` и посмотреть, что он эхо? – Yahel 2010-12-16 00:40:00

+0

Помните, что «US/Eastern», в то время как устарело, следует правилам «Переход на летнее время». Это либо GMT-04: 00, либо GMT-05: 00 в зависимости от времени года. Если вы хотите специально EDT (Восточное дневное время, лето) или EST (Восточное стандартное время, зима), вам нужно будет указать аббревиатуру 3-символа или смещение напрямую. – 2011-10-11 16:27:14

ответ

17
<?php 
    echo date_default_timezone_get(); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    echo " => $hrs:$mins:$secs\n"; 

    date_default_timezone_set('US/Eastern'); 
    echo date_default_timezone_get(); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    echo " => $hrs:$mins:$secs\n"; 

    date_default_timezone_set('America/New_York'); 
    echo date_default_timezone_get(); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    echo " => $hrs:$mins:$secs\n"; 

?> 

Кажется, работает здесь (в Берлине):

Europe/Berlin => 01:42:42 
US/Eastern => 07:45:18 
America/New_York => 07:45:18 
+0

У меня была одна ошибка, которая создавала путаницу, мне пришлось использовать «H» вместо «h» в формате даты. Извините guyz ... и спасибо тоже ... особенно MYYN, чье предложение date_default_timezone_get() помогло мне ... – booota 2010-12-16 01:01:32

4

http://www.php.net/manual/en/timezones.php

кажется US/Eastern осуждается. Попробуйте America/New_York

EDIT это, вероятно, не поможет устранить вашу проблему, но вы все равно должны это сделать. Быть устаревшими означает, что они могут удалить его в будущем.

2

Самый простой способ, вероятно, использовать gmmktime(), чтобы получить Unix timestamp для текущего GMT, затем subtract 5 hours. Таким образом, вы получаете восточное время независимо от того, где находится сервер.

4
$amNY = new DateTime('America/New_York'); 
$estTime = $amNY->format('h:i:s:u'); 

или если вы используете PHP 5.4 и выше

estTime = (new DateTime('America/New_York'))->format('h:i:s:u'); 

date_default_timezone_set() будет влиять на весь сценарий и следует использовать осторожно

0

Я просто использовать

<?php 
Date_default_timezone('est'); 
$lv=date('l, F jS, Y, g:I:s A T,$ir['laston']); 
?> 
<b>last visit</b> <em>$lv.</em> 

Кажется, отлично работает для меня в моей игре, над которой я работаю. Имейте в виду, что если вы хотите использовать его, просто удалите $ ir ['laston'], и он не должен работать без проблем.

Смежные вопросы