2012-09-01 36 views
4

好吧,我試圖將JavaScript時間戳轉換爲PHP的等價物,我已經在堆棧上瀏覽了這裏的帖子,以獲得像樣的答案以及其他各種其他所以這個問題是最後一次努力,儘管知道我可能會打敗選票,而有人告訴我,除此之外,這是來自其他地方的欺騙問題。儘管如此..JavaScript到PHP時間戳失敗,添加了大約一個半月的時間

這是我迄今爲止的嘗試失敗。請注意我使用jQuery,與noConflict因此j而非$

var yr = j('#time_year :selected').val();//year 
var mn = j('#time_month :selected').val();//month 
var dy = j('#time_day :selected').val();//day 
var hr = j('#time_hour :selected').val();//hour 
var min = j('#time_minute :selected').val();//minute 
var sc = j('#time_second :selected').val();//second 

if(j('#time_ampm :selected').val() == 12 && j('#time_hour :selected').val() < 12){hr = j('#time_hour :selected').val()+12;} 
if(j('#time_ampm :selected').val() == 0 && j('#time_hour :selected').val() == 12){hr = 0;} 

var theDate = new Date(yr, mn, dy, hr, min, sc).getTime(); 
setTimeStamps(theDate); 
j('#timestamp_now_js').html(" "+theTime); 
j('#timestamp_now_php').html(" "+Math.round(theTime/1000)); 

頂部的選擇值都基於Mozilla.org Date reference使用0-NN它們所要描述的。由於am/pm if-else基本上意味着將12小時添加到所選時間,因爲網站上顯示的時間爲12小時格式。 JavaScript使用24小時。它也在那裏,如果我被挑選並使用12,它會將12轉換爲0以匹配24小時格式化概念。

目前看起來發生的事情是,儘管它似乎工作,當我運行通過php date()函數給出的時間戳時,它顯示約2個星期和幾天的時間我正在測試的頭部關閉,這相當於現在

我會創建一個jsFiddle整個html包括,但我用PHP通過生成我的選擇框。所以,如果你想看看我有什麼「生活」,那麼去http://7pz.net/timestamps.php作爲我正在測試的概念。

回答

2

這是因爲在Javascript的Date對象中,月份範圍是0-11,而不是1-12。這是「月」的一部分。試試這個:

var mn = j('#time_month :selected').val() - 1; //month 

或更好,具有值範圍爲0〜11

另外,這種說法產生<option> S:

hr = j('#time_hour :selected').val()+12; 

記住j('#time_hour :selected').val(),不是數字,所以你必須在添加12之前將其轉換,否則你會得到類似"0412"的東西。您正在創建一個日期,將小時數設置爲412,即17天和4小時。 17天是addes到日計數。

修復這樣的:

hr = +j('#time_hour :selected').val() + 12; 

我用了plus unary operator

(PS:有一個很大的空間來提高你的代碼,從可讀性和jQuery對象緩存花一些時間來提高你的Javascript習慣一些不好的做法之前編碼技能。)

+0

你能在房間詳細改善?儘管沒有通過這個例子展示它,也許還有其他一些我在這裏做的事情。我練習緩存,並且傾向於擁有更多可讀的代碼庫。但是你不會知道這一點,只是假設。如果你知道我,那麼你會意識到這只是我玩我自己的沙盒,因爲它不是一個協作的努力,我傾向於不關心,因爲所有通常很重要的事情是我可以在這種情況下閱讀它。確定它是我的錯,因爲在發佈之前沒有清理它,但不要僅僅根據這個來判斷。 – chris

+0

無論如何,在刺痛與數字片段上的好消息,我完全忽略了這一點。第一次真的在Javascript中使用日期,因爲我通常會將事情傳遞給服務器端處理它們的方法。 – chris

+0

@chris我以爲你是一個Javascript初學者,因爲:1)':selected'部分不需要獲得'