Есть ли универсальный формат даты для PHP? - PullRequest
1 голос
/ 18 февраля 2011

Хорошо, есть ли способ установить дату, которую позже можно легко изменить в другой формат. Пример: дата находится в базе данных mysql и имеет универсальный формат; он вставлен в документ, есть ли способ изменить формат даты на лету?

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Да, это называется отметка времени Unix , которая представляет секунды с начала эпохи (31 декабря 1969 г.).

С отметками времени вы можете использовать функцию date () для вывода даты в любом формате.

2 голосов
/ 18 февраля 2011

Краткий ответ: Не совсем.


Длинный ответ:

Существует множество различных стандартов ( RFC850, RFC822, ISO8601 и многие другие) для выражения дат в различных строковых форматах. Есть также метки времени UNIX. Чтобы выполнить любое преобразование даты в PHP, вы обычно должны проходить метки времени UNIX. PHP может преобразовать практически любое стандартизированное текстовое представление даты в метку времени UNIX, используя strtotime.

Дата в вашем PHP-приложении может находиться в одном из двух состояний:

  • строковое представление, более или менее читаемое и легко взаимозаменяемое между различными средами (база данных / PHP, XML / PHP и т. Д.), Но не управляемое (сложение / вычитание / сравнение)
  • метка времени UNIX или DateTime объект (если вы используете PHP> = 5.2 и хотите его использовать), которым можно манипулировать, но он бесполезен для людей

Вы обычно конвертируете даты из одного состояния в другое во время ввода, манипулирования и вывода.
Чтобы преобразовать дату из одного текстового формата в другой, вы обычно читаете ее с помощью strtotime и переформатируете полученную временную метку в нужный вам формат.

date(DATE_RFC822, strtotime('2010-01-12 03:52:12'));

date('l jS \of F Y h:i:s A', strtotime('2010-01-12 03:52:12'));

$timestampA = strtotime('2010-01-12 03:52:12');
$timestampB = strtotime('2011-02-05 02:00:31');
if ($timestampA < $timestampB) {
    ...
}

Вы могли бы сказать, что метки времени UNIX являются универсальным форматом, но на самом деле универсального формата даты не существует. Вы не должны хранить метки времени UNIX в базе данных, а использовать собственные поля MySQL DATETIME (или DATE или TIME). При извлечении этих DATETIME полей из базы данных вы получите их в предпочтительном текстовом формате MySQL Y-m-d H:i:s. Преобразуйте это, как описано выше, в «читаемый человеком» формат, который вы желаете.

2 голосов
/ 18 февраля 2011

Использовать метки времени?http://php.net/manual/en/function.time.php

...