2010-08-05 66 views
0

所以我想要做的是将两个字符串以军事时间的形式加在一起。这里是例子。在字符串表示中增加军事时间

Time1 =“01:00”; Time2 =“04:30”;

加在一起会产生“05:30”。这看起来非常简单,但对于一个新的学习者来说,这是漫长的一天。任何帮助将不胜感激。

+0

好忘了格式化或说军事时间。举个例子,你将如何把Time1和Time2加在一起得到“05:30”。做简单的加法只是将数字加起来,这不是我所需要的。 – 2010-08-05 03:25:25

回答

2

你可以在PHP 5.3是这样的:

$d = new DateTime("01:00"); 
$f = $d->add(new DateInterval("PT04H30M")); 
echo $f->format("H:i"); //outputs 05:30 

转换至04:30 PT04H30M应该是微不足道的。请注意,这是否实际上是你想要的取决于你的意思是“04:30”。此代码可能会或可能不会将4 * 60 + 30分钟与实际时间相加。

如果你的意思是“4小时30分钟”,这总是正确的。但是,如果您的意思是“4 * 60 + 30分钟”,则取决于日期和时区。例如:

$d = new DateTime("2010-03-28 01:00 Europe/Lisbon"); 
$f = $d->setTimestamp($d->getTimestamp() + (4*60+30)*60); 
echo $f->format("H:i"); //outputs 06:30 due to DST 

一种替代实施最后箱子(假定当前日期和默认时区),用于PHP 5.2是

echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00"))); 

对于第一种情况,我们必须做到:

date_default_timezone_set("UTC"); 
echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00"))); 
+0

并说我的主机还没有更新到5.3?任何建议(除了明显的交换主机!) – 2010-08-05 03:47:21

+0

@Brian我已经添加了PHP 5.2的解决方案。 – Artefacto 2010-08-05 03:53:40

+0

你先生,太棒了!正是我在找什么。我诚实地花了45分钟在谷歌上搜索到最后。非常感激。 – 2010-08-05 04:00:05