代码之家  ›  专栏  ›  技术社区  ›  Jimmy

php/mysql/javascript mindate和maxdate

  •  7
  • Jimmy  · 技术社区  · 16 年前

    在 .net ,有静态属性 DateTime.MinDate, and DateTime.MaxDate 它方便地返回日期时间对象的最小和最大有效日期。

    我现在正在涉足网络编程,使用 php + mysql + javascript . 好像不太方便 min/max date 编程环境中的价值观?例如,MySQL中日期对象的最大值是9999-12-31,但是php函数strtotime()不喜欢这个值。

    我想要一个跨语言的最短日期(例如,用于表示“尚未设置”)和一个跨语言的最长日期(用于表示“永远好”)。这意味着数据库中可能存在存储的最小日期和最大日期,PHP将检索这些日期(并且必须区分“正常”日期和“最小/最大”日期),最终它们将渗透到一些javascript中(同样,必须区分“正常”日期和“最小/最大”日期)。

    那么,在php+mysql+javascript中使用哪个日期值作为最小/最大日期?如何存储这些常量——最好只在一个地方定义它们,并在php+mysql+javascript中使用它们……

    谢谢

    3 回复  |  直到 16 年前
        1
  •  2
  •   pjbeardsley    16 年前

    我只回答问题的php部分。根据 PHP date() documentation :

    时间戳的有效范围通常是从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
    

    输出:

    1901年12月13日15:45:52

    2038年1月18日22:14:07

    不知道为什么在他们引用的最短日期前2秒就关闭了,但是你得到了一般的想法。

        2
  •  12
  •   Darbio    14 年前

    对于javascript方面, range is a lot bigger :

    日期从1970年1月1日午夜开始以毫秒计。一天有86400000毫秒。相对于1970年1月1日UTC,日期对象范围是-100000000天到100000000天。

    所以你可以在你的javascript中这样做:

    var min_date = new Date(-100000000*86400000);
    var max_date = new Date( 100000000*86400000);   
    
        3
  •  0
  •   Iacopo    16 年前

    对于“尚未设置”逻辑值,也许空值更好。