Конвертация d.m.Y в UnixTime
Отличная идея подумал я, чтобы хранить дату рождения в одной ячейки. Но есть проблема, а если человек 1969г/р? в униксе только 1.1.1970г.
Ответы (1 шт):
- у вас же нет необходимости хранить дату рождения с точностью до секунды. Формат unixtime рассчитан как раз на это.
Чтобы воспользоваться этим преимуществом - делаем так: конвертируем, как вы и хотели, d.m.Y в unixtime. Делим на 86400 (число секунд в сутках с точки зрения наивной математики). Если надо хранить "до 70-го года" - считаем разницу между датой рождения и 01.01.1970, РАЗНИЦУ точно так же конвертируем и храним со знаком "минус".
При обратной коннвертации - делаем все в обратном порядке :-)
вас никто не будет хватать за руки, если вы решите, что "ячейка" представляет собой 64-битное, а не 32-битное значение. Кстати, в вопросе Вы этот момент никак не комментируете.
в современных 64 битных юниксах - только - тс, никому! - так и хранится. в 64 бит. А старый формат 32-битного значения оставлен для совместимости.