【问题标题】:String Replace Date & Time字符串替换日期和时间
【发布时间】:2014-10-10 07:20:07
【问题描述】:

我的 XML 中的一行如下所示:

<observation_time_rfc822>Thu, 09 Oct 2014 22:59:16 +0200</observation_time_rfc822>

我抓住它并把它分发出去:

$ob_time= $xml->observation_time_rfc822;
echo $ob_time;

输出如下所示:

2014 年 10 月 9 日星期四 22:59:16 +0200

但我需要的应该是这样的(是的,有趣的 '%3A' 替换了 ':')

2014-10-09+22%3A59%3A16

我认为字符串替换可以做到这一点,请有人帮我找出来! 谢谢!

【问题讨论】:

    标签: php string date time replace


    【解决方案1】:

    编辑:使用@Ghost的解决方案,它可以正确处理时区偏移。

    首先,您需要重新格式化您的日期。为此,您可以使用 strtotime 解析它并使用 date 函数对其进行格式化。那些“有趣的 %3A 替换”实际上是 URL 编码的字符:

    $date = date('Y-m-d H:i:s', strtotime($ob_time));
    $date = urlencode($date); // 2014-10-09+20%3A59%3A16
    

    【讨论】:

      【解决方案2】:

      在这种情况下,您可以使用DateTime 类,然后使用urlencode()

      例子:

      $ob_time = (string) $xml->observation_time_rfc822;
      
      $date = DateTime::createFromFormat('D, d M Y H:i:s O', $ob_time);
      $real_date = $date->format('Y-m-d H:i:s');
      echo urlencode($real_date); // 2014-10-09+22%3A59%3A16
      

      【讨论】:

      • 这是一个比我更好的解决方案,因为它也能正确处理时区偏移。
      • @VictorStanciu 是的,但是如果 OP 想要一个简单的解决方案,那么您的解决方案就很简单了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2014-04-23
      • 2015-09-17
      相关资源
      最近更新 更多