Используя strtotime для дат до 1970

У меня есть столбец текста в mysql, и он хранит значение даты в формате yyyy-mm-dd. Теперь, на моей php странице, я использую этот код для парсинга в значение даты.

date("F j, Y", strtotime($row['value']));

Теперь, я просто считал, что strtotime () синтаксические анализы оценивает только после 1 января 1970. У меня есть партия значений даты перед той датой. Вокруг существует ли работа? Я не хочу изменять свою структуру базы данных.

10
задан Ctroy 20 May 2010 в 05:37
поделиться

2 ответа

Из документации для strtotime():

strtotime() имеет предел диапазона между пт, 13 дек 1901 20:45:54 GMT и вт, 19 янв 2038 03:14:07 GMT; хотя до PHP 5.1.0 этот диапазон был ограничен с 01-01-1970 до 19-01-2038 на некоторых операционных системах (Windows).

Какую версию PHP вы используете? И на какой платформе? Возможно, пришло время для обновления.

Если вы работаете с датами за пределами диапазона от 13 декабря 1901 года до 19 января 2038 года, рассмотрите возможность использования объектов DateTime PHP, которые могут работать с гораздо более широким диапазоном дат.

Процедурные:

$date = date_create($row['value']);
if (!$date) {
    $e = date_get_last_errors();
    foreach ($e['errors'] as $error) {
        echo "$error\n";
    }
    exit(1);
}

echo date_format($date, "F j, Y");

ООП:

try {
    $date = new DateTime($row['value']);
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}

echo $date->format("F j, Y");
14
ответ дан 3 December 2019 в 21:20
поделиться

вы должны использовать date columnn, а не text.
и date_format() SQL-функция для форматирования даты в запросе

1
ответ дан 3 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: