2012-05-13 3 views
0

Я создаю этот пост, чтобы получить подтверждение, что я правильно понимаю процесс, а также получить обратную связь по нескольким мелким деталям по решению проблемы время публикации отображается и сохраняется правильно для пользователей в разных часовых поясах.PHP отображение сохраненных данных времени и сохранение данных времени при учете разных часовых поясов

Сохранение времени

Первый шаг при получении часовой пояс пользователи, как часовой пояс формат, используя функцию яваскрипта, и хранить его в переменной сеанса. Например, переменная часовой пояс будет хранить GMT -4

$timezone=$_SESSION['time']; 

Далее, как только у меня есть часовой пояс для пользователей. Когда пользователь делает сообщение, я сохраняю пост-время в базе данных mysql, мне нужно будет сохранить его в формате UTC. Как мне это сделать? В настоящее время, когда я храню данные времени. это происходит следующим образом. Мое поле штампа - формат даты и времени, и я хотел бы оставить его как можно больше, если это возможно.

INSERT INTO posts (stamp) VALUES (now()) 

Какую функцию я использую вместо now() для получения формата UTC, который затем будет вставлен в мою базу данных? Я предполагаю, что мне нужно использовать функцию php, которая будет использовать часовой пояс $ для получения даты UTC.

Отображение времени

Далее, только дата UTC хранится в БД. Мне нужно отобразить данные пользователю на основе переменной $ timezone, которую мы установили.

Так что, когда я показываю время, я в настоящее время сделать

echo date('F d', strtotime($list1['stamp'])); 

После того, как я сохранил данные, как время UTC, это покажет время UTC, но мне нужно, чтобы показать пользователь UTC смещения для их часовой пояс, поэтому мне нужно будет преобразовать $list['stamp'] в UTC время в часовой пояс пользователей, используя часовой пояс. Какую функцию я могу использовать для этого пользователя?

tl: dr Это должно быть все, что мне нужно для выполнения этой работы. сообщите мне, видите ли вы какие-либо предложения или элементы, которые я не учитывал, и если вы знаете, какие функции мне нужно использовать, чтобы преобразовать время в UTC для хранения в базе данных и какую функцию использовать для преобразования времени UTC для отображения пользователя с использованием переменной $ timezone.

+1

Не правильный ответ, но я нашел класс DateTime и его метод setTimezone довольно полезным в прошлом. – Corbin

+0

круто спасибо, я посмотрю на это. – arboles

ответ

1

Для вставки времени UTC в базу данных:

INSERT INTO posts (stamp) VALUES (UTC_DATE()) 

UPDATE: Это будет только вставить YYYY-MM-DD в вашу базу данных. Если вам нужно время, а также, а затем использовать:

INSERT INTO posts (stamp) VALUES (UTC_TIMESTAMP()) 

Тогда для печати даты согласно часовому поясу:

$date = date_create($list1['stamp'], timezone_open($timezone)); //$timezone='Pacific/Nauru'; 
echo date_format($date, 'F d'); 

Это должно помочь вам начать работу. Подробнее о PHP DateTime Class для объектно-ориентированных методов и более чистое программирование в целом.

+0

Удивительная благодарность.требует ли timezone_open() $ timezone = «Pacific/Nauru» или может $ timezone = 'GMT -4', если первый, как мне преобразовать GMT -4 в «Pacific/Nauru» (т.е. преобразование смещения в часовой пояс name.) – arboles

+0

Я думаю, что вам нужна функция mysql UTC_TIMESTAMP() не UTC_DATE() – user570783

+0

круто спасибо. Я должен сохранить дату, используя UTC_TIMESTAMP вместо UTC_DATE? связано ли это с полем базы данных штампа my_sql, являющимся форматом даты и времени? – arboles

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