2015-08-21 6 views
1

У меня есть следующие функции даты:Даты чтения неправильного часового пояса

function fixDate($strDateTime) { 
$strFormat = 'M, j, Y'; 
    $strFormatTime = '\a\t g:ia'; 
    $intTimeStamp = strtotime($strDateTime); 
    $strDate = date($strFormat, $intTimeStamp); 
    $strTime = date($strFormatTime, $intTimeStamp); 

    if($strDate == date($strFormat)) { 
     return "Today " . $strTime; 
    } 
    elseif($strDate == date($strFormat, strtotime('yesterday'))) { 
     return "Yesterday " . $strTime; 
    } 
    else { 
     return " on " . $strDate . " " . $strTime; 
    } 
} 

я не уверен, если это моя дата функция, которая является причиной этого или способ моей базы данных структурирована, но дата мои страницы читают AM, когда предполагается, что это PM. Он также читает США - центральное время, когда мне нужно, чтобы это было в США - восточное время. У меня есть даты, хранящиеся в phpmyadmin как категория Date.

Как я могу изменить дату, чтобы читать как США - восточное время?

+0

прочитать: http://php.net/manual/en/function.date-default-timezone-set.php – Berriel

+1

я рекомендовал бы сохранять все даты как ГРИНВИЧУ, и преобразования в конкретный часовой пояс на слое «вид». –

+0

Так что я должен добавить это перед моей функцией даты? ... 'date_default_timezone_set ('America/Cleveland');'? или я бы поместил в Нью-Йорк? Оба являются восточными часовыми поясами. – Paul

ответ

0

попытаться изменить,

function fixDate($strDateTime) { 
$strFormat = 'M, j, Y'; 

в

function fixDate($strDateTime) { 
$strFormat = 'M, j, Y'; 
date_default_timezone_set('America/New_York'); 
+0

Он по-прежнему отображается в центральное время. – Paul

+0

Я сделал обновление – sriharichander

+0

Показывая Центральной. – Paul

1

Я всегда установить часовой пояс по умолчанию GMT

# store all data internally as GMT: 

# local tz 1 \ 
# local tz 2 + <-> webservice.php <-> gmt tz 
# local tz 2/

date_default_timezone_set('Zulu'); 
if(! defined('DATE_FORMAT')) define ('DATE_FORMAT', 'Y-m-d H:i:s'); 

Затем делают GMT к местному часовому поясу в «вид слой. Местные часовые пояса являются серьезной проблемой, особенно с летним временем. :-)

##################################################### 
# TIME UTILS 
##################################################### 

# STORE ALL TIME DATA AS GMT, ALONG WITH THE ORIGINAL TIME ZONE 


# format date string referencing one timezone to another timezone, eg 
# 'Zulu' -> 'America/Chicago' 
# internally, store all data as GMT, 
# where each person has a different view of data 
# NOTE: full datetime is require, because of dst 
function datetime_convert($datestr, $from, $to, $format = null) { 

    if (! $from) { 
     error_log("no timezone 'from'"); 
     return $datestr; 
    } 

    if (! $to) { 
     error_log("no timezone 'to'"); 
     return $datestr; 
    } 

    if (! $format) { 
     $format = DATE_FORMAT; # defined above 
    } 

    $date = date_parse($datestr); 
    #print_r($date); 

    $dtime = new DateTime(); 

    # input in $from timezone 
    $dtime->setTimeZone(new DateTimeZone($from)); 
    $dtime->setDate($date['year'],$date['month'],$date['day']); 
    $dtime->setTime($date['hour'],$date['minute'],$date['second']); 

    # output in $to timezone 
    $dtime->setTimeZone(new DateTimeZone($to)); 
    $newdatestr = $dtime->format($format); 

    return $newdatestr; 
} 


# convert dates with a GMT offset to offset == 0 
# 2012-01-20T15:52:22.000-05:00 -> 2012-01-20T20:52:22.000Z 
function datetime_normalize($datestr) { 
    $dtime = new DateTime($datestr); 
    $dtime->setTimeZone(new DateTimeZone('Zulu')); 
    $newdatestr = $dtime->format(DATE_FORMAT); 
    return $newdatestr; 
} 

# convert a local time to GMT 
function datetime_to_gmt($datestr, $from, $format = null) { 
    return datetime_convert($datestr, $from, 'Zulu', $format); 
} 

# convert a GMT time to local 
function datetime_to_local($datestr, $to, $format = null) { 
    return datetime_convert($datestr, 'Zulu', $to, $format); 
} 
Смежные вопросы