Ответ 1
date($format, strtotime("$date + 4 hours"));
Я работаю над переносом блога из пользовательского встроенного блога в Wordpress. Одним из полей, которые ищет Wordpress в базе данных, является дата/время, установленное на GMT, что на 4 часа раньше нашего времени. Поэтому мне в основном нужно взять нашу дату/время (в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС) и добавить к ней четыре часа. Я смотрел на команду MySQL "ADDTIME", но я думаю, что работает только на выбор, а не на вставках.
Я обработал script, который взорвал дату в частях и добавил 4 часа до времени, но последующая логика, которая потребуется для проверки, когда 4 часа нажимают на следующий день/месяц/год казался немного чрезмерным.
date($format, strtotime("$date + 4 hours"));
Нет ничего, что предотвращало использование 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... ;
Как насчет:
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" ) )
Возможно, потребуется немного проверки ошибок, но вы должны решить свою проблему.
Или лучше в SQL
DATE(DATE_ADD(`Table`.`Column`, INTERVAL 4 HOURS))
Для всех ответов, использующих DATE_ADD, правильный синтаксис - "4 ЧАСА", а не "4 ЧАСА" (по крайней мере, в текущей версии MySQL):
UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOUR);
Похоже, что 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'
Я использовал этот метод:
$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;
Если вы используете (день/месяц/год) [бразильский формат даты], как показано ниже, это не работает:
$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
Работает 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"
<?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;
?>
UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOURS);
Следовательно, полезно в php для добавления fucntion в столбец