Intereting Posts
Использование переменной из другого условия в PHP Как изменить начальный номер заказа в Magento Приложение PHP PHP SDK для загрузки фотографий на страницу базовый php pbkdf2 хеширование Инкрементная переменная для каждого набора опций в корзине покупок Анализ MySQL в JavaScript Массивы через PHP и jQuery Учитывая массив массивов, как я могу заменить все пустые значения на 0? Как обрабатывать изображения, отправленные мобильным устройством? Получение информации из базы данных MYSQL & Codeigniter Как подключить два или несколько файлов и отправить почту в PHP Величина ввода формы на основе выбранного значения параметра вставить все данные $ _POST в mysql с помощью PHP? Где я могу сохранить частичные (представления) в Zend Framework, чтобы быть доступным для всех представлений в моем приложении? Обновление рейтинга в таблице дублирование вставки данных в CodeIgniter

Добавить 13 часов в метку времени

У меня есть таблица со значениями времени:

     2009-07-14 02:00:00

Мне нужно отобразить их во время выполнения с добавлением 13 часов, например:

     2009-07-14 15:00:00

Каков самый простой способ сделать это в PHP?

Related of "Добавить 13 часов в метку времени"

я знаю это

 date( "YMd H:i:s", strtotime( $timestamp_from_array ) + 13 * 3600 ); 

вонючий, но это даст вам представление.

strtotime преобразует строку timestamp в значение timestamp, затем мы добавляем часы и преобразуем их обратно в формат timestamp в массиве с функцией date .

Но я полагаю, что вы действительно хотите использовать часовые пояса .

Изменить: igstan правильный, вы также должны учитывать изменения летнего времени между этими смещениями.

Существует множество проблем с временными зонами и летним временем при использовании базовой арифметики для расчета времени. Лучшее решение – полагаться на собственные функции времени / времени PHP, такие как strtotime () или mktime () . Я писал о проблемах DST в своем блоге .

 echo date('YMd H:i:s', strtotime('2009-07-14 02:00:00 + 13 hours')); 

Можете ли вы сделать добавление, поскольку оно выходит из базы данных?

 SELECT ... DateAdd(hh, 13, DateField) AS DateField 

(SQL Server)

У вас есть стол со временными метками? Если это база данных MySQL, вы можете просто сделать это в базе данных с помощью addtime : SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');

Если вы используете PHP Zend Framework, вы можете сделать что-то вроде:

  $date=new Zend_Date(Array('year'=>$iYear,'month'=>$iMonth,'day'=>$iDay)); // changes $date by adding 12 hours $date->add('12:00:00', Zend_Date::TIMES); 

В качестве альтернативы вы можете сделать это, используя собственные функции PHP4, такие как: [быстрее, менее точная: не учитывает скачки секунд / изменения часовых поясов и т. Д.]

 $datestamp=strtotime('2009-07-14 02:00:00'); // It'll probably be better using mktime $datestamp=$datestamp+(60*60*13); // 60 seconds times 60 minutes times 13 hours 

или [более медленный, более точный]

  $datestamp = strtotime('2009-07-14 02:00:00'); // It'll probably be better using mktime $newDate = date('Ymd H:i:S', mktime(date('H',$datestamp)+13, date('i',$datestamp), date('s',$datestamp), date('m',$datestamp), date('d',$datestamp), date('Y',$datestamp))); 

или, если вы используете PHP 5, используя функции Datetime

 $date = new DateTime('2009-07-14 02:00:00'); date_add($date, new DateInterval("P13H")); 

вы можете использовать http://de3.php.net/manual/en/function.strptime.php, чтобы преобразовать его в временную метку unix. Тогда вы можете легко добавить 13 * 60 * 60 к этому и использовать http://de3.php.net/manual/en/function.date.php, чтобы преобразовать его обратно в временную метку по своему усмотрению.

другой способ был бы через функцию взрыва, но я думаю, что это может быть более сложным, потому что вам нужно посмотреть, изменились ли дни / месяц / годы и прочее

Я знаю, что это было задано давно, и я уже выбрал ответ, но я полагал, что важно указать новых пользователей в более современном и правильном направлении, которое использует фантастическую библиотеку Carbon :

 >>> Carbon\Carbon::parse('2009-07-14 02:00:00') ... ->addHours(13) ... ->format('Ymd H:i:s'); => Carbon\Carbon {#869 +"date": "2009-07-14 15:00:00.000000", +"timezone_type": 3, +"timezone": "UTC", } 

Углерод не только упрощает выполнение запрошенного расчета, но и защищает вас от любых возможных ошибок, которые могут возникнуть при попытке вручную выполнить одно и то же.

Оболочка в приведенном выше примере вывода – Laravel Tinker. Laravel отправляется с Carbon, поэтому вышеприведенное заявление работает из коробки. Если вы не используете современную фреймворк PHP, вы должны быть. Легко добавить к нему углерод.

 <?php echo date('Ymd H:i:s', strtotime('+13 hours', strtotime('2009-07-14 02:00:00'))); ?> 

Предположим, вы выбрали определенное поле даты из своей таблицы под названием « datetime_field » из строки ID 3000. Это было бы так просто!

 SELECT *, ADDTIME(`datetime_field`,'0 13:00:00') as new_datetime FROM `table_name` WHERE id = 3000 

Разумеется, это может быть использовано и в запросах обновления, если вы хотите обновить, конечно.

И, альтернативно, если бы вы просто добавляли к запросу 13 часов (разницы в часовом поясе). Можно использовать MySQL NOW () в качестве исходного времени и просто добавить время, как указано выше. Выбор, обновление или вставка – это все те же методы! Это было бы:

 SELECT *, NOW() as current_datetime, ADDTIME(NOW(),'0 13:00:00') as new_datetime FROM `table_name` WHERE id = 3000 

Держите его простым и быстрым!

: О)