Альтернативный или лучший способ прикрепить и применить время / дату к предоставленным пользователем данным и преобразовать их в указанные часовые пояса - PullRequest
1 голос
/ 04 ноября 2011

В настоящее время я прикрепляю, сохраняю и конвертирую время / дату с пользовательскими записями / закачками / временем регистрации и т. Д., Устанавливая часовой пояс по умолчанию на UTC и выбирая отметку времени с PHP time() при обработке.

Затем я сохраняю данные для каждой строки, представленной в базе данных (int(11)), а затем, когда я отображаю их сообщения / загрузки и т. Д., Я делаю запрос, в котором я приношу с собой прикрепленную метку времени и преобразую ее в соответствииукажите часовой пояс и сделайте его читаемым, указав дату в формате.

Обратите внимание, что $timezone и $date_format были выбраны в настройках их профиля при создании учетной записи.

Хранение данных

<?php

    date_default_timezone_set('UTC');
    $time_stamp = time();

    // MySQL injection protection here...
    // Store data here...

?>

Получение данных

<?php

    // MySQL query here....

    $post_time = $row['time_stamp'];

    $post_dt_zone = new DateTimeZone($timezone);

    $time_from_post = date('r', $post_time);

    $post_d_time = new DateTime($time_from_post);

    $post_d_time->setTimeZone($post_dt_zone);

    $time_from_post = $post_d_time->format($date_format);

?>

Теперь мой вопрос, это хороший метод?Существуют ли альтернативы, которые используются чаще, или я столкнусь с проблемами в будущем, если я попытаюсь что-то обновить?

1 Ответ

0 голосов
/ 25 ноября 2011

Зависит от обстоятельств. Судя по названию ваших переменных, вы записываете время, когда было сделано сообщение. Вы можете использовать метод php time() или метод MySQL.

Метод MySQL: вы создаете таблицу (или редактируете текущую) с полем времени 'time_posted' как:

CREATE TABLE table_name(
id int NOT NULL,
time_posted datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (id))

Единственное, что меняется, когда вы вставляете новую строку, это то, что вам больше не нужно вставлять метку времени (или дату), MySQL сделает это автоматически.

Однако вы должны знать, что использование NOW() сохранит дату / время в следующем формате: 2011-12-10 12:51:23.212 , Так что, если вы хотите, чтобы ваша дата отображалась, то это может быть метод, который вы можете использовать. Вы также можете использовать CURDATE() и CURTIME(), которые показывают (отдельно) дату и время соответственно.

Однако если вы хотите отобразить дату / время в другом формате, вам нужно будет использовать strtotime() или mktime(), чтобы получить метку времени опубликованной даты / времени, а затем использовать предпочитаемый метод для отображения это так, как вы хотите. Если это так, я думаю, что ваш нынешний метод лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...