【问题标题】:Adding dates from SQL in PHP (types Datetime + Time)在 PHP 中从 SQL 添加日期(类型 Datetime + Time)
【发布时间】:2013-02-08 14:42:02
【问题描述】:

我想在一个 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"

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

【问题讨论】:

    标签: php sql date datetime


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

    See it in action

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案3】:

        嗯,我是这样处理的:

        $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 的解决方案,只是不客观。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-03
          • 1970-01-01
          • 1970-01-01
          • 2011-08-31
          • 1970-01-01
          • 2012-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多