2016-03-03 72 views
1

我試圖找到PHP的「格林威治時間(格林尼治標準時間)與小時和分鐘之間的冒號的差異示例:+02:00」MySQL的DATE_FORMAT函數的日期格式。MySQL DATE_FORMAT:與格林威治時間格式的差異

PHP實例:

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

我有我試圖格式化爲ISO 8601。我有大部分格式的日期字段,但我錯過了最後一部分是「差異格林威治時間「AKA」+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

嗯......好點;你很可能最終得到像'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); 
相關問題