Как добавить 4 часа в PHP/MySQL

Я работаю над переносом блога из пользовательского встроенного блога в Wordpress. Одним из полей, которые ищет Wordpress в базе данных, является дата/время, установленное на GMT, что на 4 часа раньше нашего времени. Поэтому мне в основном нужно взять нашу дату/время (в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС) и добавить к ней четыре часа. Я смотрел на команду MySQL "ADDTIME", но я думаю, что работает только на выбор, а не на вставках.

Я обработал script, который взорвал дату в частях и добавил 4 часа до времени, но последующая логика, которая потребуется для проверки, когда 4 часа нажимают на следующий день/месяц/год казался немного чрезмерным.

Ответы

Ответ 1

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

Ответ 2

Нет ничего, что предотвращало использование ADDTIME() в INSERT ИЛИ UPDATE, но DATE_ADD(), вероятно, будет работать лучше всего:

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

Ответ 3

Как насчет:

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" ) )

Возможно, потребуется немного проверки ошибок, но вы должны решить свою проблему.

Ответ 4

Или лучше в SQL

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

Ответ 5

Для всех ответов, использующих DATE_ADD, правильный синтаксис - "4 ЧАСА", а не "4 ЧАСА" (по крайней мере, в текущей версии MySQL):

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

Ответ 6

Похоже, что TZ вашей базы данных настроен на GMT (UTC), как и должно быть. Вам необходимо преобразовать локальную дату в GMT при добавлении в базу данных.

из Справочного руководства MySQL 5.1:

CONVERT_TZ(dt,from_tz,to_tz)

CONVERT_TZ() преобразует значение dt-времени dt из часового пояса, заданного from_tz, в часовой пояс, заданный to_tz, и возвращает результирующее значение. Часовые пояса могут быть указаны, как описано в разделе 5.10.8 "Поддержка часового пояса сервера MySQL". Эта функция возвращает NULL, если аргументы недействительны.

Если значение отклоняется от поддерживаемого диапазона типа TIMESTAMP при преобразовании fom from_tz в UTC, преобразование не происходит. Диапазон 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'

Ответ 7

Я использовал этот метод:

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

Ответ 8

Если вы используете (день/месяц/год) [бразильский формат даты], как показано ниже, это не работает:

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

echo "Дата/час сервера". $Todays_date;

echo "Дата сервера/час + 2 часа".date( " 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 "
". эхо "дата сервера/час + 2 часа".date( " т/д/Y Н: я: s", StrToTime ( "$ todays_date + 2 часа" ));

Результат:

Дата/час сервера           04/10/2012 07:44:36

Дата/час сервера + 2 часа   04/10/2012 09:44:36

Ответ 9

Работает 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"

Ответ 10

<?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;

?>

Ответ 11

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

Следовательно, полезно в php для добавления fucntion в столбец