【问题标题】:PHP transform string to date periodPHP 将字符串转换为日期期间
【发布时间】:2015-03-11 15:50:36
【问题描述】:

我想知道怎么做!? 我有:

$datePeriod = '2010-09-13 - 2010-09-19' 

我需要输出:

09/13/10 - 09/19/10

我想用 strtotime() 和 date() 原生函数来做

date('m/d/Y \- \ m/d/Y', strtotime($datePeriod));

但是 strtotime() 不直接接受这个字符串 '2010-09-13 - 2010-09-19' 我需要在将它提供给 strtotime() 或 date() 之前进行切片、修剪?这是正确的方法还是比使用转换操作更简单的方法?

【问题讨论】:

  • 您需要将该字符串拆分为两个单独的日期,分别转换每种格式,然后重新构建字符串
  • 现在我正在阅读手册php.net/manual/en/datetime.format.php 但没有显示期间示例。我怎么做不到?

标签: php regex date transform


【解决方案1】:

您可以在此处使用preg_replace_callbackstrtotimedate

$datePeriod = '2010-09-13 - 2010-09-19';
echo preg_replace_callback('/\b(\d{4}-\d{2}-\d{2})\b/', function($m) { 
               return date('m/d/y', strtotime($m[1])); }, $datePeriod);
//=> 09/13/10 - 09/19/10

【讨论】:

  • 感谢您的帮助。您的实现既简短又简单。
【解决方案2】:

php 日期格式需要单个日期作为输入,因此,您需要拆分和修剪日期。 在这种情况下最简单的方法是使用 preg_split

$dates = preg_split("/ \- /",$string);

现在您在 $dates 变量中有 2 个日期,您可以按照问题中的建议使用 strtotime 单独转换它们,然后根据需要将它们连接起来

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 2012-05-21
    • 1970-01-01
    • 2015-09-17
    • 2021-05-31
    • 2019-04-12
    • 2011-09-08
    • 2015-03-24
    • 2011-05-17
    相关资源
    最近更新 更多