2014-03-13 56 views
0

希望這是一個容易的,但我無法獲得可預測的結果。我想要它的原因是爲mongo數據庫添加一個可比較的時間,該數據庫將在幾秒鐘內存儲,但以格式化的時間字符串打印到屏幕上,並將時間+持續時間打印爲格式化的時間字符串。在它下面的例子應該是早上8:30的開始時間和上午的結束時間php在日期函數中設置時間

<?php 
function toTimeStamp($time){ 
    // 60 * 60 * 8.5 
    // sec * min * $time 
    return 60 * 60 * $time; 
} 

function fromTimeStamp($sec){ 
    return date('g:ia', $sec); // HH:MMam/pm 
} 

$start = toTimeStamp(8.5); // 30600 
$duration = toTimeStamp(2); // 7200 
echo fromTimeStamp($start) . '<br>'; // 9:30am 
echo fromTimeStamp($duration) . '<br>'; // 3:00pm 
echo fromTimeStamp(($start + $duration)) . '<br>'; // 11:30pm 

感謝尋找10:30。

+0

你確定你使用的是毫秒嗎?看起來像秒鐘。 –

+0

是啊,對不起,這是一個錯字.. php似乎在date()功能中使用秒。我會立即修復它 – synthet1c

回答

1

好像時區的問題給我。
試試這個:

function fromTimeStamp($sec){ 
    date_default_timezone_set('UTC'); 
    return date('g:ia', $sec); // HH:MMam/pm 
} 

根據http://us.php.net/manual/en/function.date-default-timezone-set.php

date_default_timezone_set - 設定一個腳本中所有日期/時間函數的默認時區

所以,你可以在命令放置到更方便每次都不要叫。

+0

輝煌的所有可能的時區,這是問題,感謝您的幫助@mirelon。 – synthet1c

+0

我不確定我需要這樣做,因爲這些函數將是類mongo數據庫中save()和find()的類中的方法。我不需要這個方法的其他地方。 – synthet1c

1

是日期函數接受第二個參數作爲時間戳(秒)

+0

謝謝你的清理,但這不是問題的關鍵在於設置utc時間。如果你使用'(60 * 60 *($ time -1))',它有點作用,但是當把持續時間加到開始時它不起作用。 – synthet1c

+0

是的,在PHP中有時區功能。無論你想要什麼時區,你都可以用date_default_timezone_set(TIMEZONENAME)來設置它。你可以看到php.net –