2013-10-20 43 views
1

我對如何在獲取用戶的時區時可以存儲和訪問各種事物的'時間點'有點好奇。使用time();作爲存儲/數據庫數據將會很酷。PHP時間/日期時區特定的東西

例如,如果我對博客進行了更新,它會將郵票顯示爲類似26/01/2000 11:34的郵票,但如果用戶的時區比我的小一小時,那麼它會顯示爲26/01/2000 12:34,當然通過他們的設置確定。這對倒計時等時間有限的功能也很有用。然而,我不知道如何以這種方式格式化unix時間戳。指導和幫助將是美好的:)。

回答

2

您的所有職務時間和服務器的時間應該是UTC開始。 從數據庫中檢索您的文章的時間,並利用以某種方式DateTime和DateTimeZone類類似下面

$fromDatabase = '2008-08-03 14:52:10'; 
$datetime = new DateTime($fromDatabase); 
$timezone = new DateTimeZone('America/Los_Angeles'); 
$datetime->setTimeZone($timezone); 
echo $datetime->format('Y-m-d H:i:s'); 

或者在Linux上,如果使用MySQL可以裝載時區表,調整了MySQL查詢返回的日期時間。請參閱此頁面以瞭解如何從此開始 - http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

1

請上的日期閱讀手冊頁:

PHP Manual: Date

我相信這段代碼會做你問:

$time = time(); 
$today = date("m j, Y, G:i a"); 
echo $today; 

要更改時區,加上或減去一個小時。由於unix時間戳以秒爲單位,60秒x 60分鐘= 1小時或360秒。所以加360秒向前邁進一小時減O跳到1小時回來了,就像這樣:

$time = time()-360; 
+0

從我所知道的,如果你想要更多的準確性,你可以[通過使用microtime(true)返回秒,但作爲一個浮點值[以毫秒爲單位在PHP中獲取時間](http://currentmillis.com)然後,您可以將1000乘以millis:round(microtime(true)* 1000) – Sandman

0

對於在此處以及在另一個時間問題上重新發布我的答案表示抱歉。

這將格式爲「YYYY-MM-DD HH:MM:SS」任何時間的工作(也許可以通過「新日期時間」功能可隨時使用

function changetimefromUTC($time, $timezone) {     // SEND YOUR ORIGINAL TIME AND YOUR NEW TIMEZONE 
    $changetime = new DateTime($time, new DateTimeZone('UTC')); //YOUR ORIGINAL TIME GOES HERE 
    $changetime->setTimezone(new DateTimeZone($timezone));  // THIS CHANGES TO THE NEW TIMEZONE 
    return $changetime->format('m/d/y h:i a'); // THIS OUTPUTS THE NEW TIME IN WHATEVER FORMAT YOU WANT 
} 

的名單。支持時區http://us1.php.net/manual/en/timezones.php

相關問題