2013-06-02 64 views
0

你好,我是用Date()功能我得到的時刻,是當前和時間從數據庫來的時間比較工作,但日期是不同的:日期是不同

date_default_timezone_set("America/Los_Angeles"); // set time zone to LA 
$date = date("m-d-Y h:i:s"); // current time 
$current_time = strtotime($date); // current time in seconds 
$get_time = 1357487529; //linux time from the server 
$difference = $current_time - $get_time; //seconds that have pass already 
$get_date = date("m-d-Y h:i:s", $get_time); // convert the linux time to current time and date 
$exploded_get_date = explode(" ", $get_date); //divide the get date into 2 parts by space 0 = date 1 = time 
$exploded_current_date = explode(" ", $date); //divide the current date into 2 parts by space 0 = date 1 = time 

結果我得到的是:

01-Sun-2013 07:52:09 //get date 
06-01-2013 07:56:25 //current date 
1357487785 // current time 
1357487529 // get time 
256 //difference 

爲什麼它說我有1個月的獲取日期,但在當前的日期竟然是6個月,也它說,這是星期天6天,當週六1 ?我怎樣才能解決這個問題?

回答

0

m-d-Y不是有效的解析格式。只有你們美國人認爲把這些元素排列在未排序順序上是明智的...

無論如何,關鍵是,06-01-2013是什麼意思?是六月一日還是一月六日?

爲了保持一致性,計算機假設1月6日(d-m-Y格式)。

我強烈建議使用Y-m-d H:i:s格式,因爲由於是完全大端的,所以它本身可以排序爲字符串。

編輯:應該指出,你可以只使用time()獲得當前的時間戳。

+0

好吧,我明白你的意思了,是的,這是問題,是的我們「美國人」使用日期不同於我猜測的其他地方..但是,謝謝你,這項工作將盡快接受答案。 – user2444411

+0

對不起,如果我似乎粗魯。我仍然試圖弄清楚依賴於自己身體部位尺寸的測量系統是如何將它放在任何地方的...... –

+0

不,沒關係,謝謝你的幫助 – user2444411

0

你的代碼是很冗餘:

$date = date("m-d-Y h:i:s"); // current time 
$current_time = strtotime($date); // current time in seconds 

可以替換簡單的

$current_time = time(); 

$get_date = date("m-d-Y h:i:s", $get_time); // convert the linux time to current time and date 
$exploded_get_date = explode(" ", $get_date); //divide the get date into 2 parts by space 0 = date 1 = time 
$exploded_current_date = explode(" ", $date); 

可能只是

$exploded_date = date('m-d-y', $get_time); 
$exploded_time = date('h:i:s', $get_time); 

您正在浪費大量的無用/重複和最終冗餘操作的CPU週期。

從更大的圖片來看,您的錯誤是PHP的正常和最簡單的分析/解析日期/時間字符串格式爲yyyy-mm-dd。你正在建造mm-dd-yyyy,這幾乎是完全混亂。當你輸入不確定的格式時,PHP無法正確猜測。這意味着strtotime()會搞砸,給你不正確的結果。

+0

是啊謝謝你的幫助,我會工作有了這個 :) – user2444411