我想添加5天和当前时间到一个日期,我已经在字符串中。将当前时间添加到日期时间
$date = new DateTime('2013-11-21');
date_add($date, date_interval_create_from_date_string('5 days'));
$curtime = date('H:i:s');
如何当前时间添加到日期时间,或有任何其他更好的方法怎么办呢?
我想添加5天和当前时间到一个日期,我已经在字符串中。将当前时间添加到日期时间
$date = new DateTime('2013-11-21');
date_add($date, date_interval_create_from_date_string('5 days'));
$curtime = date('H:i:s');
如何当前时间添加到日期时间,或有任何其他更好的方法怎么办呢?
只要编辑您的最后通道 - 我认为这是您的问题最客观的解决方案。其余的代码是正确的。
$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
可以加5几天喜欢这样:
$nextX = time() + (5 * 24 * 60 * 60);
5天* 24小时* 60分钟* 60秒
尝试:
$date = '2013-11-21';
$date = strtotime($date);
$date = strtotime("+7 day", $date);
echo date('M d, Y', $date);
对不起,不回答我的问题。你不添加当前时间。 – Andrew
试试这个
$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
你的代码给了我一个结果:2013-11-26 12:44:17。 这不是相应的时间,但这不是问题,请在解决方案中添加一小时和几天。 非常感谢。 顺便说一句,我的问题写得不好,或者你是唯一一个正确阅读的人吗? – Andrew
那么要确定你需要在DateTime对象的每个构造函数中放置正确的时区。我已经为你编辑和编辑了,检查出来(最后一个) –
关于你的问题,我认为它很好,但你没有试图在代码中添加任何方法,所以我们假设你只是首先想要增加5天:P –