【问题标题】:convert date to time stamp by php [duplicate]通过php将日期转换为时间戳[重复]
【发布时间】:2011-12-07 13:26:08
【问题描述】:

可能重复:
Unix timestamp before 1970 (even before 1700), using PHP

如您所知,我们在 HTML5 中有 date 元素,它可以返回类似 1000-10-05 的内容,现在我需要将其作为时间戳,我尝试通过 mktime() 进行操作,但它不会返回真正的价值。 现在我该怎么做?

【问题讨论】:

  • mktime 只支持过去 1970 年,不支持 1000 年。
  • @JürgenThelen - Unix 时间戳的范围并非按设计硬编码;这取决于特定平台支持的整数的大小。
  • @Álvaro G. Vicario:你是对的。我猜我仍然生活在 32 位世界中^^
  • @JürgenThelen - 无符号 准确地说是 32 位 ;-)
  • @JürgenThelen 老兄,你把他的蹩脚例子看得太认真了。

标签: php html date timestamp


【解决方案1】:

mktime() 是基于时间戳的。在 32 位系统上,时间戳无法到达那么远的日期 - 有符号的 int 可以从 ca 到达。 1900 年到 2038 年。

如果您需要对 1900 年之前的日期进行操作,请考虑改用 DateTime library,它在 PHP 5.2 及更高版本中可用。它在内部使用 64 位数据,可以管理任何日期。

【讨论】:

  • CW'ing 因为这当然是一个骗局 - 回答的冲动往往比思考和寻找原创作品的冲动更强烈!
  • @moein 请注意:- 您需要 PHP > 5.2 才能使用 DateTime 库。
  • @vascowhite - 如果你现在使用的是 5.2 之前的版本,你真的需要考虑升级。甚至不再支持 5.2。早于该版本的版本现在已停止支持 很长时间,并且可能存在安全问题。
  • @Spudley 我没说我是,但共享主机上的一些人是。
【解决方案2】:

如果您的问题不是所讨论的时间戳范围问题,请尝试使用 strtotime 而不是 mktime。

【讨论】:

  • 正如我在回答中所说...如果您使用的 1000 年日期超出了时间戳的范围,但当我回答时我并不清楚它不是这只是一个记下的例子。
【解决方案3】:

使用

strtotime($yourHTML$DateString);

【讨论】:

    【解决方案4】:

    strtotime('1000-10-05') 必须这样做。但它只支持 1970 和 >

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 2013-12-17
      • 2013-09-12
      • 2012-08-28
      • 2014-09-10
      相关资源
      最近更新 更多