PHP:时间&日期:简单的子问题,需要从1个字符串中分割日期和时间

时间:2011-04-16 16:30:34

标签: php web-services refactoring ebay substr

我有来自eBay Web-Service的这个字符串。

  

// 2Days 23小时37分钟50秒   $ string = P2DT23H37M50S

我使用以下代码提取时间和日期:

  

$ daysLeft = substr($ string,1,1)。 “天”;
      $ hoursLeft = substr($ string,4,2)。 “小时”;
      $ minutesLeft = substr($ string,7,2)。 “分钟”;
      $ secondsLeft = substr($ string,10,2)。 “秒”;

但问题是,当小时,分钟和日期只有1位时,字符串变得混乱,我最初工作了,但是我很难找到一个简单的方法去做,我要去把它写在一堆If语句中,但真的想要一个更简单的方法来做到这一点。

2 个答案:

答案 0 :(得分:3)

如何使用sscanf(与sprintf相反)?

list($daysLeft, $hoursLeft, $minutesLeft, $secondsLeft) = sscanf($string, "P%dDT%dH%dM%DS ");

答案 1 :(得分:0)

如果您现在所有字段都在那里,只需preg_split非数字上的字符串:

$fields = preg_split('[^0-9]+', $string);
$daysLeft = $fields[1] . " Days";
$hoursLeft = $fields[2] . " Hours";
$minutesLeft = $fields[3] . " Minutes";
$secondsLeft = $fields[4] . " Seconds";