2

任何人都可以帮助我解决我长时间陷入困境的问题,我正在尝试以h:ia小时和分钟的格式01:00(一小时),00:30(30分钟),02:00(两小时)等格式添加时间。在php中.

因为我有几个小时的格式,就像('00:30','01:00','01:30','02:00')我已经拥有的时间一样。我试过这个

$interval="01:00";

$now=new DateTime('h:ia');

$time=($now,strtotime(+$interval,$now));

但它不工作。任何帮助将不胜感激。

4

2 回答 2

4

您应该检查 strtottime() 文档以添加 1 小时,只需使用

strtotime("+1 hour");

你也可以使用time() + 60*60

您可以使用DateTime 对象中称为“ add ”的方法。

从手册:

DateTime::add -- date_add — 向 DateTime 对象添加一定数量的天、月、年、小时、分钟和秒

您可以创建DateInterval对象并将间隔添加到现有的DateTime对象。

要格式化日期,您可以在DateTime对象上使用format()方法。

编辑:

简单的爆炸也可以解决您的问题。

 $interval="01:00";
 $xp = explode(":", $interval);
 $time=time() + (int)$xp[0] * 60*60 + (int)$xp[1]*60;
 echo date("h:ia", $time);

或更多面向对象的解决方案

$interval="01:00";
$now=new DateTime();
$now->add(new DateInterval("P0000-00-00T$interval:00"));
echo $now->format('h:ia');

工作演示

于 2013-06-25T12:07:25.950 回答
3

你可以尝试这样的事情:

$interval = "01:00";
$yourInterval = new DateInterval('P0000-00-00T'.$interval.':00');
//Setting the date and seconds to "0"

$time = new DateTime('now');
//Or any other method to get your DateTime

$time->add($yourInterval);

我认为在所有情况下,您都应该使用 DateTime 和 DateInterval,或者 strtotime() 我不确定是否混合使用它们。我更喜欢使用 DateTime 和 DateInterval 因为它更面向对象。

在所有情况下,我建议不要为日期操作而爆炸。这是非常危险的,因为有很多你无法预测的问题(比如 bisexstil 秒等......)

编辑:我想如果你只是在操纵时间而不是日期,那么爆炸你的字符串不是问题,主要问题是你是否使用日期。

于 2013-06-25T12:21:37.730 回答