2013-11-24 98 views
1

我想添加5天和当前时间到一个日期,我已经在字符串中。将当前时间添加到日期时间

$date = new DateTime('2013-11-21'); 
date_add($date, date_interval_create_from_date_string('5 days')); 
$curtime = date('H:i:s'); 

如何当前时间添加到日期时间,或有任何其他更好的方法怎么办呢?

回答

3

只要编辑您的最后通道 - 我认为这是您的问题最客观的解决方案。其余的代码是正确的。

$curtime = $date->format('Y-m-d H:i:s'); 

请记住,你的第二个通道只是一个别名:

$date->add(DateInterval::createFromDateString('5 days')); 

所以完整的代码是:

$date = new DateTime('2013-11-21'); 
$date->add(DateInterval::createFromDateString('5 days')); 
$curtime = $date->format('Y-m-d H:i:s'); 

编辑:我刚读了你的问题再次,你问到增加当前时间到这个日期。如果你想添加时间,那么你需要从当前日期创建它。这不是完美的解决方案,但我仍然工作就可以了:

$now = new DateTime(date('1970-01-01 H:i:s')); 
$date->add(DateInterval::createFromDateString($now->getTimestamp() . ' seconds')); 
$curtime = $date->format('Y-m-d H:i:s'); 
echo $curtime; 

EDIT2:我已经纠正了它更,看一下这个代码:

$date = new DateTime('2013-11-21'); 
$date->add(DateInterval::createFromDateString('5 days')); 

$now = new DateTime('now'); 
$today = new DateTime(date('Y-m-d')); 

$time = $today->diff($now); 

$date->add($time); 

echo $date->format('Y-m-d H:i:s'); 

EDIT3:并记住有关时区:

$date = new DateTime('2013-11-21', new DateTimeZone('Europe/Warsaw')); 
$date->add(DateInterval::createFromDateString('5 days')); 

$now = new DateTime('now', new DateTimeZone('Europe/Warsaw')); 
$today = new DateTime(date('Y-m-d'), new DateTimeZone('Europe/Warsaw')); 


$time = $today->diff($now); 

$date->add($time); 

echo $date->format('Y-m-d H:i:s'); 

和小提琴:http://sandbox.onlinephpfunctions.com/code/0080d18d18dd7e2fefa7dea7d961087f14ceb3df

+0

你的代码给了我一个结果:2013-11-26 12:44:17。 这不是相应的时间,但这不是问题,请在解决方案中添加一小时和几天。 非常感谢。 顺便说一句,我的问题写得不好,或者你是唯一一个正确阅读的人吗? – Andrew

+0

那么要确定你需要在DateTime对象的每个构造函数中放置正确的时区。我已经为你编辑和编辑了,检查出来(最后一个) –

+0

关于你的问题,我认为它很好,但你没有试图在代码中添加任何方法,所以我们假设你只是首先想要增加5天:P –

0

可以加5几天喜欢这样:

$nextX = time() + (5 * 24 * 60 * 60); 

5天* 24小时* 60分钟* 60秒

0

尝试:

$date = '2013-11-21'; 
$date = strtotime($date); 
$date = strtotime("+7 day", $date); 
echo date('M d, Y', $date); 
+0

对不起,不回答我的问题。你不添加当前时间。 – Andrew

0

试试这个

$hour_two = "2013-11-21"; 
$date = strtotime($hour_two); 
$hour_two = $date + (5 * 24 * 60 * 60); 
$hour_two=date('Y-m-d',$hour_two); 
$currenttime = date('H:i:s'); 
$h = strtotime($currenttime); 
$minute = date("i", $h); 
$second = date("s", $h); 
$hour = date("H", $h); 
$new_time = $hour_two." ".$hour.":".$minute.":".$second; 
echo $new_time."<br/>"; // here is your final date time 
$timeto_string=strtotime($new_time); // test using strtotime 
echo date('Y-m-d H:i:s',$timeto_string); // print by formating 
相关问题