Как сохранить даты старше отметки времени в PHP - PullRequest
1 голос
/ 24 июня 2011

Это должно быть легко, но я просто не могу найти ответ.

У меня есть поле ввода, в которое пользователь вводит дату своего рождения (ДД.ММ.ГГГГ) и с помощью strtotime ()Я вставляю его в целочисленное поле в MySQL, потому что он быстрее, чем datetime (и у меня много записей).

Но очевидно, что будут пользователи старше 1.1.1970, поэтому отметка времени будет нулевой.На веб-странице я хочу показать, сколько лет пользователю.Так что, если он родится в 1960 году, ему будет 51 год.Я знаю, что мог бы изменить поле MySQL на DATETIME, но все равно PHP был бы тем, который рассчитывает возраст пользователя, и он использует метку времени UNIX.

Итак, как мне организовать это?Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

Вы должны использовать объект DateTime при обработке даты и времени в PHP.Он очень гибок при разборе форматов дат, может вычислять разницу между двумя датами и не имеет проблем 1970 или 2038 годов.

0 голосов
/ 11 июля 2015

Вы должны использовать объект DateTime. Вы можете увидеть один пример кода здесь:

<?php

$date = new DateTime("1960-05-06");
$timestamp = $date->getTimestamp();
echo $timestamp; //-304707600

echo "\n";

$date = new DateTime();
$date->setTimestamp($timestamp);
$birthday = $date->format("Y-m-d");
echo $birthday; //1960-05-06

echo "\n";

echo date("Y") - $date->format("Y"); //55 years old for now (2015)

?>

Выход:

-304732800
1960-05-06
55

Онлайн тест здесь: https://ideone.com/sKjBWS

0 голосов
/ 24 июня 2011

Вы должны использовать MySQL DATETIME, рассчитать в SQL-запрос. используйте функцию php date () для преобразования в mysql DATETIME при сохранении в базу данных

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