如何在PHP / MySQL中添加4小时的时间

时间:2009-11-02 14:31:16

标签: php mysql datetime

我正在进行从定制博客到Wordpress的博客迁移。 Wordpress在数据库中寻找的一个字段是设置为GMT的日期/时间戳,比我们的时间提前4个小时。所以我基本上需要采用我们的日期/时间戳(YYYY-MM-DD HH:MM:SS格式),并添加四个小时。我在看MySQL命令“ADDTIME”,但我认为这只适用于选择,而不适用于插入。

我编写了一个脚本,将日期分解为部分,并且增加了4个小时,但是当4小时推进到下一天/月/年时需要检查的逻辑似乎有点过分。

11 个答案:

答案 0 :(得分:31)

date($format, strtotime("$date + 4 hours"));

答案 1 :(得分:14)

没有什么可以阻止在INSERTUPDATE中使用ADDTIME(),但DATE_ADD()可能最有效:{/ p>

INSERT INTO table_name
SET my_datetime = DATE_ADD('2009-11-01 19:30:00', INTERVAL 4 HOURS),
...other insert columns here... ;

答案 2 :(得分:6)

怎么样:

date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22" )+4*60*60 )

甚至

date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22 + 4 hours" ) )

可能需要进行一些错误检查,但应解决您的问题。

答案 3 :(得分:3)

或者更好的SQL

DATE(DATE_ADD(`Table`.`Column`, INTERVAL 4 HOURS))

答案 4 :(得分:2)

对于使用DATE_ADD的所有答案,正确的语法是“4 HOUR”而不是“4 HOURS”(至少在当前版本的MySQL中):

UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOUR);

答案 5 :(得分:1)

看起来您的数据库的TZ设置为GMT(UTC),这是应该的。 添加到数据库时,您需要将本地日期转换为GMT。

从MySQL 5.1参考手册:

CONVERT_TZ(dt,from_tz,to_tz)

CONVERT_TZ()将日期时间值dt从from_tz给定的时区转换为to_tz给定的时区,并返回结果值。可以按第5.10.8节“MySQL服务器时区支持”中所述指定时区。如果参数无效,则此函数返回NULL。

如果在将from_tz转换为UTC时,该值超出了TIMESTAMP类型支持的范围,则不会发生转换。 TIMESTAMP范围在第11.1.2节“日期和时间类型概述”中进行了描述。

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
        -> '2004-01-01 13:00:00'

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
        -> '2004-01-01 22:00:00'

答案 6 :(得分:0)

我使用过这种方法:

$format = Y-m-d; //you can use any format if you want
$date = $row['date']; // from mysql_fetch_array
$date2 = date($format, strtotime("$date + 4 week"));
echo $date;

答案 7 :(得分:0)

如果你使用(日/月/年)[巴西日期格式]如下,它不起作用:

  

$ todays_date = date(“ d / m / Y H:i:s”);

     

echo“服务器日期/小时”。 $ todays_date;

     

回显“服务器日期/小时+2小时”。日期(“ d / m / Y H:i:s”,   strtotime(“$ todays_date + 2小时”));

<强>结果:

  

服务器日期/小时 10/04 / 2012 07:44:36

     

服务器日期/小时 + 2小时 04/10 / 2012 09:44:36


你需要你(月/日/年)并且它完美无缺:

  

$ todays_date = date(“ m / d / Y H:i:s”); echo“服务器日期/小时”。

     

$ todays_date “
”。 echo“”服务器日期/小时+2小时“。日期(” m / d / Y H:i:s“,strtotime(”$ todays_date + 2小时“));

<强>结果:

  

服务器日期/小时 04/10 / 2012 07:44:36

     

服务器日期/小时 + 2小时 04/10 / 2012 09:44:36

答案 8 :(得分:0)

100%工作

<?php

$datee= date("Y-m-d", strtotime("$last_update+ 10 hours"));
$timee= date("H:i:s", strtotime("$last_update+ 10 hours"));
?>

Last update was on: <?php  echo $datee; ?>  at  <?php  echo $timee; ?>

$ last_update是来自mysql的值内容时间戳

结果将是这样的“上次更新时间:2015-02-05 05:01:43”

答案 9 :(得分:0)

<?php

function data_time($DT, $pm, $val, $time_type){
    $time = date("H:i:s");
    $date = date("d.m.Y");

    if($DT=='d'){
        switch($pm){
            case '+': $newData = date("d.m.Y ", strtotime("$date + $val $time_type"));
            break;
            case '-': $newData = date("d.m.Y ", strtotime("$date - $val $time_type"));
            break;
        }
        return $newData;
    }
    if($DT=='t'){
        switch($pm){
            case '+': $newTime = date("H:i:s ", strtotime("$time + $val $time_type"));
            break;
            case '-': $newTime = date("H:i:s ", strtotime("$time - $val $time_type"));
            break;
        }
        return $newTime;
    }
}

$newData = data_time('t','+',5,'year')
//or

$DataTime = 'd'; // 't' or 'd'
$PlusMinus ='+'; // '+' or '-'
$val = 1;        // 0-9
$DMT ='month';   // 'day', 'month' or 'year'

$newData = data_time($DataTime, $PlusMinus, $val, $DMT);
echo $newData;

?>

答案 10 :(得分:0)

UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOURS);

因此,在php中添加fucntion到列

非常有用