Метка времени Unix и дата mysql: дата рождения - PullRequest
4 голосов
/ 15 апреля 2010

У меня есть очень простой вопрос относительно отметки времени unix и даты mysql. Я пытаюсь создать небольшой сайт, где пользователи могут зарегистрироваться и указать дату своего рождения.

Проблема в том, что unix начинается с 01 января 1970 года. Теперь, если я вычислю возраст для пользователей, сформируйте такие даты, как date ('mdY', $ unix_from_db) и так далее, для пользователей старше 40 лет, не так ли?

Так, что было бы правильным способом сделать это. Извините, за такой простой вопрос, как этот, но я неопытен в php и mysql.

// Изменить: Спасибо вам всем. Я запутался, потому что дата ('mdy', mktime (0,0,0,1,1,1890)) и дата ('mdy', - 2000) вернулись 01.01.70 - в следующий раз я буду учиться Руководство более тщательно. Я смог исправить свой сайт, еще раз спасибо. Жаль, что я могу принять только один ответ, все они одинаково хороши.

Ответы [ 4 ]

5 голосов
/ 15 апреля 2010

Отметки времени Unix для времен до 1970 года являются отрицательными целыми числами, считая количество секунд до 1 января 1970 года.

Например, 2/13/1943 - это -848343600

4 голосов
/ 15 апреля 2010

И что? Арифметика работает с отрицательными числами. Когда они начинаются, эпоха не имеет значения, если она используется последовательно.

Отрицательные числа тоже люди! Не различай! Больно их чувствам.

3 голосов
/ 15 апреля 2010

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

http://en.wikipedia.org/wiki/Unix_time

У вас не должно быть проблем с датами до эпохи:

<?php
echo date("m-d-Y", mktime(0, 0, 0, 1, 1, 1970));
echo date("m-d-Y", mktime(0, 0, 0, 1, 1, 1969));
echo date("m-d-Y", mktime(0, 0, 0, 1, 1, 1943));
?>

Выходы

01-01-1970
01-01-1969
01-01-1943
2 голосов
/ 15 апреля 2010

Сохраните дату как дату или дату / время в mysql.

Выведите ее так, как вам нравится с датой:

date('<format>', strtotime($date_from_db));

strtotime вернет некоторое отрицательное целое число для дат до 1970 года. Date будетсправиться с этим просто отлично.

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