php / mysql / javascript mindate и maxdate - PullRequest
7 голосов
/ 10 июня 2010

В .net есть статические свойства DateTime.MinDate, and DateTime.MaxDate, которые удобно возвращают минимальную и максимальную допустимые даты для объекта DateTime.

Я сейчас увлекаюсь веб-программированием, используя php + mysql + javascript. Кажется, в этой среде программирования нет таких же удобных min/max date значений? Например, максимальное значение объекта даты в mysql составляет 9999-12-31, но функция php strtotime () не любит это значение.

Я хотел бы, чтобы минимальная дата на разных языках (например, использовалась для обозначения «еще не установлено») и максимальная дата на нескольких языках (использовалась для обозначения «навсегда»). Это означает, что в базе данных могут храниться те минимальные и максимальные даты, которые php будет извлекать (и для этого нужно будет различать «нормальные» даты и минимальную / максимальную дату), и в конечном итоге они будут переходить к некоторому JavaScript ( , снова придется различать «нормальные» даты и минимальную / максимальную дату).

Итак, какое значение даты вы используете для минимальных / максимальных дат при работе в php + mysql + javascript? И как вы храните эти константы - было бы неплохо определить их только в одном месте и сделать их доступными в каждом из php + mysql + javascript ...

Спасибо

Ответы [ 3 ]

12 голосов
/ 10 июня 2010

Что касается JavaScript, диапазон намного больше :

Дата измеряется в миллисекундах с полуночи 01 января 1970 года по UTC. День держит 86 400 000 миллисекунд. Диапазон объектов Date составляет от -100 000 000 дней до 100 000 000 дней относительно 01 января 1970 года UTC.

Так что вы можете сделать это в своем JavaScript:

var min_date = new Date(-100000000*86400000);
var max_date = new Date( 100000000*86400000);   
2 голосов
/ 10 июня 2010

Я просто отвечу на вопрос PHP.В соответствии с PHP date () документация :

Допустимый диапазон отметки времени обычно от пт, 13 декабря 1901 20:45:54 по Гринвичу до вт, 19 января 203803:14:07 по Гринвичу.(Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком)

PHP использует 32-разрядные целочисленные значения для представления даты / времени - это означает, что вы можете использовать константу PHP_INT_MAXполучить целочисленные значения, связанные с минимальными / максимальными датами:

echo date('m/d/Y G:i:s', PHP_INT_MAX + 1); // minimum valid date
echo date('m/d/Y G:i:s', PHP_INT_MAX); // maximum valid date

ВЫХОД:

12/13/1901 15: 45: 52

01/ 18/2038 22: 14: 07

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

0 голосов
/ 11 июня 2010

Для логического значения «еще не установлено» может быть лучше нулевое значение.

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