2013-12-23 3 views
0

Я пытаюсь преобразовать дату сохранения времени utc в другой часовой пояс, но я не могу понять, как это правильно. У меня есть время:Datetime php конверсии и использование с часовым поясом

date1 = new DateTime('first day of the month'); 
    date1.setTime(0,0,0); // Since using the first day of the month seems return the current time with different date 

по умолчанию DateTime часовой пояс находится в UTC. Время, которое я хочу сделать ссылкой, находится в часовом поясе «Европа/Амстердам». В любом случае, я не могу найти время в часовом поясе «Европа/Амстердам», чтобы быть эквивалентным первому дню месяца в UTC? (Э-э, извините, мой вопрос был запутанным. Позвольте мне просто привести пример, чтобы быть ясным). Я пытаюсь выполнить запрос из db.

If UTC date time is June 01, 2013. 00:00:00 
    I want to get get May 29, 2013 19:55:00. 

Я пытался получать разницу между этими двумя объявлена ​​разом с разными часовыми поясами, чтобы получить время, что я хотел, но мне кажется это не работали :( My Edit/Разъяснение:

Если использовать этот код:

$date1 = new DateTime('first day of the month'); 
    $date1.setTime(0,0,0); 
    print_r($date1->format('Y-m-d H:i:s')); 

Я хотел бы получить:

2013-06-01 00:00:00 

п, если я использую часовой пояс:

$date1->setTimeZone(new DateTimeZone('Europe/Amsterdame')); 
    print_r($date1->format('Y-m-d H:i:s')); 

Я хотел бы получить: (Это просто пример вывода):

2013-06-01 03:00:00 

Из-за разницы во времени. Хотелось бы, чтобы я хотел получить, это похоже на обратное: я хочу получить дату и время, когда при конвертированном часовом поясе «UTC» я получаю следующее: 06-01-2013 00:00:00. Поэтому мой предпочтительный результат: 2013-05-29 21:00:00 ...

+1

Это неправда PHP. –

+1

Вы пытались: http://www.php.net/manual/en/datetime.settimezone.php? –

+2

Я не вижу, как * 1 июня, 00:00 UTC * относится к * 29 мая, 19:55 Amsterdam * вообще. – deceze

ответ

0

Чтобы установить дату по умолчанию в PHP, вы можете либо установить его в свой ini-файл, либо в файл PHP, например:

date_default_timezone_set('Europe/Amsterdam'); 

Затем, чтобы отформатировать дату, см. http://www.php.net/manual/en/function.date.php для форматирования.

В вашем случае это будет:

date('j M Y' time()); 

Где J = день, M = месяц и Y = год.

2

Вы можете сделать это способом ООП.

$date = new DateTime('2000-01-01 00:00:00', new DateTimeZone('Europe/Amsterdam')); 
echo $date->format('Y-m-d H:i:s P') . "\n"; 
Смежные вопросы