php / mysql / javascript mindate和maxdate

时间:2010-06-09 20:45:58

标签: php javascript mysql date

.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 个答案:

答案 0 :(得分:12)

对于JavaScript方面,range is a lot bigger

  

自UTC时间1970年1月1日午夜起,日期以毫秒为单位。一天持有86,400,000毫秒。相对于UTC时间1970年1月1日,Date对象范围是-100,000,000天到100,000,000天。

所以你可以在JavaScript中执行此操作:

var min_date = new Date(-100000000*86400000);
var max_date = new Date( 100000000*86400000);   

答案 1 :(得分:2)

我将回答问题的PHP部分。根据{{​​3}}:

  

时间戳的有效范围通常是从格林尼治标准时间1901年12月13日20:45:54到格林威治标准时间2038年1月19日星期二03: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秒,但你得到了一般的想法。

答案 2 :(得分:0)

对于'not set yet'逻辑值,可能空值更好。