2011-05-22 88 views
0

我有一個設置,我想將購買時間降低到準確的秒數。截至目前爲止,我使用CURTIME()。現在它以這種格式返回時間16:03:59如果我想要存儲時間並在正確的時間區域顯示時間,例如2:03 PM,我應該怎麼做?謝謝。Mysql PHP存儲和顯示購買時間爲正確的用戶時區

$qry = "INSERT INTO purchases 
    (id, qty, Date, Time, product_id, totalprice) 
    VALUES('$id', '$qty', CURDATE(), CURTIME(),'$pid', '$price')"; 
$result = @mysql_query($qry); 

回答

0

兩件事情:
1)將是有意義的鞏固日期&時間列到一個單一的,比方說,orderDate存儲列作爲MySQL的日期時間插入值(那麼你可以簡單地使用,NOW() )

2)PHP具有很大的文檔: http://php.net/manual/en/function.date.php

要爲UTC時區站點訪問者的時區:

date_default_timezone_set('UTC'); // replace with variable, probably stored in user's session 

btw,不確定MySQL是否提供了設置時區(可能設置爲服務器默認值),因此您可能必須使用上面的php日期函數格式化orderDate。

所以,使用$ Q綜上所述,在查詢結果循環,你的顯示器可能是:

echo date("Y-m-d h:i:s", strtotime($q[''orderDate])); 
+0

好,這裏是東西。我需要爲我的網站上的所有內容同步設置時間。我有一個定時倒數計時器,所以我需要的基準時間與倒計時倒計時以及購買時間完全一樣。它會全部同步到第二個嗎? – DonWrk 2011-05-22 17:51:12

+0

當我向用戶顯示購買時間時,我不想顯示日期,只顯示一天中的時間。我是否應該將它們單獨存儲或單獨存儲? – DonWrk 2011-05-22 17:58:01

+0

好吧,如果你的服務器時間是正確的,並且你正在使用它來比較orderDateTime,yes。不知道什麼是「時間倒計時」是關於,但與服務器時間和orderDateTime在MySQL中,你應該是第二 – virtualeyes 2011-05-22 17:59:06

0

首先,我想存儲的時間(),然後執行轉換爲字符串的值必要時適當的時區。例如,如果用戶在旅行時更改其時區,這會更加優雅。

要格式化用戶的時區,可以使用Javascript獲取時區,然後將其傳遞給PHP並進行相應的格式化。這已經被問/應答前:

Javascript/PHP and timezones

0

我會使用UTC_TIMESTAMP存儲您的時間值在UTC,再使用ISO日期格式抓住他們:

SELECT DATE_FORMAT(UTC_TIMESTAMP, GET_FORMAT(DATETIME, 'ISO')); 

於運行位前給:

2011-05-22 17:53:23 

所以我們可以說用戶在西海岸,我們可以做這樣的事情,以使他們的本地時間:

$timeZone = 'America/Los_Angeles'; 
$dateSrc = '2011-05-22 17:53:23'; 

$dateTime = new DateTime($dateSrc, new DateTimeZone('GMT')); 
$dateTime->setTimeZone(new DateTimeZone($timeZone)); 
echo "Result is: " . $dateTime->format('Y-m-d H:i:s'); 

採樣運行:

$ php test.php 
Result is: 2011-05-22 10:53:23 
+0

因此,如果用戶在中央時間,它會輸出12:53:23? – DonWrk 2011-05-22 18:08:53

+0

@DonWrk是的,你需要將'$ timeZone'變量設置爲中央時間 – 2011-05-22 18:11:28

相關問題