2016-03-03 4 views
1

Я пытаюсь найти эквивалент PHP «Разница к Гринвичскому времени (GMT) с двоеточием между часами и минутами Пример: формат даты +02: 00 для функции DATE_FORMAT MySQL.MySQL DATE_FORMAT: разница в формате времени по Гринвичу

PHP Пример:

<?php 
    echo date('P'); 
    //+02:00 

У меня есть поле даты я пытаюсь форматировать до ISO 8601. У меня есть большая часть формата, но я пропускаю последнюю часть, которая является «Разница в Гринвич время "АКА" +00: 00 ".

MySQL Пример:

SELECT DATE_FORMAT(date, "%Y-%m-%dT%T) as date FROM table; 
//returns 2016-03-03T16:03:01 
//required 2016-03-03T16:03:01+00:00 

Ссылки: справки о

http://php.net/manual/en/function.date.php

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

+0

Может быть стоит проверить это так вопрос, увидеть, если это помогает: HTTP://stackoverflow.com/questions/805538/in-mysql-caculating-offset-for-a-time-zone - замените 'NOW()' на указанную дату, и она * должна * работать. – CD001

+0

@ CD001 мое поле даты будет содержать прошлые и будущие даты, сравнивая его с UTC_TIMESTAMP(), дайте мне правильный ответ? –

+0

Ummm ... хорошая точка; вы, скорее всего, получите тарабарщину, такую ​​как 'GMT -123449232: 00' ... Лично я склонен оставлять даты в базе данных как UTC и позволять приложению манипулировать ею на основе часового пояса; но я не уверен, какова ваша конечная цель здесь. – CD001

ответ

0

Я использую это для установки PHP и MySQL в той же временной зоне

$tz = 'UTC'; 
    date_default_timezone_set ($tz); 
    $now = new DateTime(); 
    $mins = $now->getOffset()/60; 
    $sgn = ($mins < 0 ? -1 : 1); 
    $mins = abs($mins); 
    $hrs = floor($mins/60); 
    $mins -= $hrs * 60; 
    $offset = sprintf('%+d:%02d', $hrs*$sgn, $mins); 
    define('DB_TIMEZONE', $offset); 
    define('PHP_TIMEZONE', $tz); 
Смежные вопросы