2012-09-07 66 views
0

我試圖創建一個準確的Unix時間戳來分配給一個變量,基於不同的時間段。任何想法如何計算這些時間戳的時間?PHP - 準確的Unix時間戳

+1

「時間戳」將指示一個時刻。當你說你想要一個「本月」的時間戳時,你是否想要在當前月份的開始時間(本月的第一天的午夜)或兩個時間戳記指示月份的開始和結束邊界或者是什麼?請澄清。 – Celada

+0

@Celada,是的,時間戳是計算邊界。所以它應該是本月的開始。 – Wonka

+0

http://www.php.net/manual/en/book.datetime.php – Herbert

回答

3

我只能建議你閱讀時間手冊。

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

今天,去年午夜 - >獲取時間+分,做一個減24:00小時計算,可使用http://php.net/manual/en/function.abs.php讓你的價值正

所有的人都是可以解決的,通過使用http://php.net/manual/en/function.strtotime.php

在最糟糕的情況下,將其轉換爲unix時間並獲得差異,您將獲得精確的輸出,而不必關注您提到的閏年和其他時間條件,如28/29 feb問題。

0

我可以說你不想這樣做嗎?存儲常規的Unix時間戳 - 如果需要,可以將轉換轉換爲本地時間戳。

當時區變化或有人移動夏令時時,數據真正流暢,速度非常快。根據您需要數據的準確度,閏秒(甚至閏秒)是可能的。

時間處理代碼非常複雜和/非常/智能。

  • 存儲實時戳。
  • 存儲標記該時期開始的時間戳。
  • 當你需要的時候減去。
  • 避免晦澀的錯誤。
0

我是PHP的DateTime classes的大支持者。他們減輕了處理時間時產生的許多挫折。

此示例說明如何使用它。

<?php 

header('Content-type: text/plain'); 

$today = new DateTime("today"); 
echo 'Today: ' . $today->format('Y-m-d H:i:s') . "\n"; 
echo 'Timestamp: ' . $today->getTimestamp() . "\n\n"; 

$thisweek = new DateTime("this week"); 
echo 'This Week: ' . $thisweek->format('Y-m-d') . "\n"; 
echo 'Timestamp: ' . $thisweek->getTimestamp() . "\n\n"; 

$thismonth = new DateTime("this month"); 
echo 'This Month: ' . $thismonth->format('Y-m') . "\n"; 
echo "Days this month: ", $thismonth->format('t') . "\n"; 
echo 'Timestamp: ' . $thismonth->getTimestamp() . "\n\n"; 

?> 

您可以通過使用DateTimeZone類來增強它。