【问题标题】:how to convert date string to time interval in PHP如何在PHP中将日期字符串转换为时间间隔
【发布时间】:2011-08-24 22:44:02
【问题描述】:

如何将预设的日期字符串转换为时间间隔?日期字符串的格式为d/m/Y g:i:s A?

我尝试了以下方法,但它什么也没返回:

$date = ... time format set above ....;
echo strtotime($date); //returns nothing.

示例日期 - 2011 年 8 月 24 日晚上 11:47:09

【问题讨论】:

  • 向我们展示一个示例日期字符串。
  • 检查问题以进行编辑!
  • 切换到 Y/m/d 似乎有效 - echo strtotime( '2011/08/24 11:47:09 AM' );

标签: php date time strtotime


【解决方案1】:

如果您使用的是 PHP 5.3 或更新版本,您可以使用 DateTime::createFromFormat

对于 PHP 5.2,您可以将其重新格式化为 strtotime() 可以这样处理的内容:

$date = '24/08/2011 11:47:09 PM';
$d = substr($date,6,4).substr($date,3,2).substr($date,0,2).substr($date,10);
$ts = strtotime($d); //1314229629

【讨论】:

  • 那么它可能是你的手动解析。这个,或者升级(现在是时候了)
【解决方案2】:

strtotime 不会为您提供所需的结果,因为它假定日期为m/d/Y,请参阅Date Formats

您可以尝试replace /- 的日期,这将导致格式被接受,但感觉错误/错误,尽管如果您的格式是固定的,它应该可以工作:

$new_date = str_replace("/", "-", $string_date);
$timestamp = strtotime($new_date);

【讨论】:

  • 有趣,这是我第一次得到一个例外的答案,但票数为负。一个解释会很好......
【解决方案3】:

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

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

http://php.net/manual/en/function.strtotime.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2012-05-21
    • 2015-04-25
    • 2020-10-21
    • 2018-02-19
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多