duandui5648 2013-11-24 12:10
浏览 65
已采纳

将当前时间添加到DateTime

I would like to add 5 days and current time to a date, which I have in string.

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

How to add current time to DateTime, or is there any other better way how to do it?

  • 写回答

5条回答 默认 最新

  • dtgu21994537 2013-11-24 12:14
    关注

    Just edit your last lane - I think it is the most objective solution to your problem. The rest of your code is correct.

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

    Remember that your second lane is just an alias to:

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

    So the full code would be:

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

    EDIT: I've just read your question again and you ask about adding current time to this date. If you want to add time, then you need to create it from current date. It's not the perfect solution, but I'm still working on it:

    $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: I've corrected it much more, look at this code:

    $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: And remember about time zones:

    $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');
    

    And fiddle: http://sandbox.onlinephpfunctions.com/code/0080d18d18dd7e2fefa7dea7d961087f14ceb3df

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端