如何从时间字符串创建DateInterval

时间:2014-02-12 23:39:36

标签: php dateinterval

如果我有时间格式字符串,如“14:30:00”(“小时:分钟:秒”),如何从字符串中获取DateInterval?

我可以获得一个DateTime:

$datetime= DateTime::createFromFormat("H:i:s","14:30:00");

但是我需要将它添加到另一个DateTime对象,而date_add需要一个DateInterval。

1 个答案:

答案 0 :(得分:19)

如果你想要一个14小时30分钟的间隔,只需使用构造函数......

$interval = new DateInterval('PT14H30M');

要分解......

  • P - 所有区间规范字符串必须以P开头(期间)。我们没有使用任何时间间隔,但是......
  • T - 这会启动时间规范
  • 14H - 14小时
  • 30M - 30分钟

如果你必须使用字符串 14:30:00 ,我会用sscanf解析它并使用这些部分...

list($hours, $minutes, $seconds) = sscanf('14:30:00', '%d:%d:%d');
$interval = new DateInterval(sprintf('PT%dH%dM%dS', $hours, $minutes, $seconds));