有人能帮我解决一个我被困了很长时间的问题吗?我正试图在php中添加时间,比如格式为h:ia
的01:00
(一小时)、00:30
(30分钟)、02:00
(两小时)等。
由于我有('00:30','01:00','01:30','02:00')
格式的小时,所以我已经有了时间。我试过这个
$interval="01:00";
$now=new DateTime('h:ia');
$time=($now,strtotime(+$interval,$now));
但它不起作用。任何帮助都将不胜感激。
您应该检查strtotime()文档,只需使用即可添加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');
工作演示
你可以试试这样的东西:
$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,因为它更面向对象。
在任何情况下,我都建议不要为了约会而大发雷霆。这是非常危险的,因为有很多你无法预测的问题(比如bisextil秒等)
编辑:我想,如果你只是在操纵时间,而不是日期,那么分解字符串不是问题,主要问题是如果你使用日期。