1

我想在 php 应用程序中添加 MySQL 数据库中的 2 个值。一个存储为 Datetime 类型,另一个存储为 Time。

$datetime; // "2013-02-08 14:00:00"
$time; // "01:00:00"

我想在 $datetime 上加 1 小时,这并没有给我正确的结果:

$newdatetime = strtotime($datetime) + strtotime($time);
echo date('Y-m-d H:i:s', $newdatetime); // "1920-02-11 08:31:44"

我怎样才能正确地做到这一点?

4

3 回答 3

2
$dt = new DateTime("2013-02-08 14:00:00");
$dt->modify('+1 hour');
echo $dt->format('Y-m-d H:i:s');

看到它在行动

于 2013-02-08T14:44:25.223 回答
2
$datetime = DateTime::createFromFormat('Y-m-d H:i:s', $datetime);

// extract H, M, S
$time = sscanf($time, '%d:%d:%d');

// build date interval string
$time = vsprintf('PT%dH%dM%dS', $time);

// add it to your date
$datetime->add(new DateInterval($time));

print $datetime->format('Y-m-d H:i:s');

但如果$time总是一小时,John Conde 的解决方案将是一个更好的选择:P

于 2013-02-08T14:58:13.277 回答
1

嗯,我是这样处理的:

$datetime = "2013-02-08 14:00:00";
$time = "01:00:00"; //not always 1 hour, value from db
$t = explode(":",$time); // array(01,00,00)
$hour = mktime($t['0'],$t['1'],$t['2'],1,1,1970); // 3600
$newdatetime = strtotime($datetime) + $hour; 
echo date("Y-m-d H:i:s",$added); // "2013-02-08 15:00:00"

不是最优雅的方式,但有效!正如我现在所看到的,它与 One Trick Pony 的解决方案相似,只是不客观。

于 2013-02-08T16:11:09.427 回答