【问题标题】:How to reformat "d-m-Y - d-m-Y" string to "Y-m-d Y-m-d"?如何将“d-m-Y - d-m-Y”字符串重新格式化为“Y-m-d Y-m-d”?
【发布时间】:2021-03-09 23:06:33
【问题描述】:

我想更改包含两个由空格连字符空格分隔的d-m-Y 日期字符串(代表一个范围)的字符串的格式。所需输出的格式应为Y-m-d - Y-m-d

我可以使用d/m/Y - d/m/Y 字符串成功执行类似的技术,但是在解析这些新字符串的格式时出现了问题。

我的代码:

$date = "25-05-2020 - 30-05-2020";

$string = explode('-', $date);
$date1 = explode('-', $string[0]);
$date2 = explode('-', $string[1]);

$date1 = $date1[2] . '-' . $date1[0] . '-' . $date1[1];
$date2 = $date2[2] . '-' . $date2[0] . '-' . $date2[1];

echo $date1 . ' - ' . $date2;

我想要的示例输入输出是2020-05-25 - 2020-05-30

【问题讨论】:

  • 在你的第一个explode函数之前和之后添加空格:$string = explode(' - ',$date);
  • 能否请您详细说明代码...我无法理解
  • 如果你想分割你的两个日期,你需要在你的第一个分解函数中在“-”之前和之后使用一个空格。否则,您将其拆分为字符串中的每个“-”,而不仅仅是中间的那个。 php.net/manual/en/function.explode.php

标签: php date format date-range date-parsing


【解决方案1】:

只需在- 前后添加一个空格,如下所示:

<?php

$date = "25-05-2020 - 30-05-2020";
$splitted_dates = explode(" - ",$date);
$date1 = $splitted_dates[0];
$date2 = $splitted_dates[1];

echo $date1, " " , $date2;

演示: https://3v4l.org/QTIHd

【讨论】:

    【解决方案2】:

    另一种解决方案:

    <?php
    $date = "25-05-2020 - 30-05-2020";
    
    preg_match_all('/\d{1,2}-\d{1,2}-\d{4}/', $date, $matches);
    
    list ($date1, $date2) = $matches[0];
    
    echo $date1." ".$date2;
    

    Demo

    【讨论】:

      【解决方案3】:

      我发现最直接的技术是单个 preg_replace() 调用,它交换字符串中每个日期的日期和年份值。这样做时,不需要生成任何临时数组来将输入字符串转换为输出字符串。

      • 捕获:天数 ($1)
      • 捕获:连字符、月份编号、连字符 ($2)
      • 捕获:年份编号 ($3)
      • 匹配:空格、连字符、空格
      • 捕获:天数 ($4)
      • 捕获:连字符、月份编号、连字符 ($5)
      • 捕获:年份编号 ($6)

      代码:(Demo)

      var_export(
          preg_replace(
              '~(\d{2})(-\d{2}-)(\d{4}) - (\d{2})(-\d{2}-)(\d{4})~',
              '$3$2$1 - $6$5$4',
              '25-05-2020 - 30-05-2020'
          )
      );
      

      输出:

      '2020-05-25 - 2020-05-30'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 2018-05-25
        • 1970-01-01
        • 2023-03-08
        • 2013-09-09
        • 1970-01-01
        • 2015-10-26
        相关资源
        最近更新 更多