【问题标题】:Convert this string to timestamp PHP [duplicate]将此字符串转换为时间戳 PHP [重复]
【发布时间】:2013-10-21 05:29:44
【问题描述】:

我有这个字符串:“13/10 15:00”,我想将它转换为时间戳,但是当我这样做时:

      $timestamp = strtotime("13/10 15:00");

它返回一个空值。

【问题讨论】:

  • strtotime 并非万无一失 - 如果您知道格式,则应使用 DateTime::createFromFormat(可从 PHP 5.3.x 及更高版本获得)或类似的。 (您还需要提供缺失的年份。)
  • 您的字符串不是明确定义的日期或时间
  • 你可以使用这个Carbon::create(2022, 1, 21, 10, 00, 00)

标签: php timestamp strtotime date-conversion


【解决方案1】:

在您的代码中,strtotime() 试图将 13/10 转换为第 13 个月的第十天,这会返回错误。

如果要解析自定义格式的日期字符串,最好使用 DateTime::createFromFormat() 代替:

$dtime = DateTime::createFromFormat("d/m G:i", "13/10 15:00");
$timestamp = $dtime->getTimestamp();

【讨论】:

  • $timestamp 变量包含 DateTime 对象,而不是时间戳。要获取时间戳,请使用 $timestamp->getTimestamp();$timestamp->format('U');
  • @Glavić 确实如此 - 仍然比 strtotime() 更可靠。谢谢。
【解决方案2】:
  $timestamp = strtotime("13-10-2013 15:00");

这可能很重要:

m/d/y 或 d-m-y 格式的日期可以通过查看来消除歧义 各个组件之间的分隔符:如果分隔符是 斜线 (/),则假定为美式 m/d/y;而如果 分隔符是破折号 (-) 或点 (.),然后是欧洲 d-m-y 格式 假设。

为避免潜在的歧义,最好使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat() 尽可能。

http://uk3.php.net/strtotime

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 2012-02-15
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2012-05-16
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多