2017-03-28 133 views
0

我有兩個日期(從數據時間選擇器),我用PHP發送到這個相同的頁面(我在表單中使用隱藏的<input>)發送。PHP日期和POSIX日期

$(function(){ 
    flatpickr('#calendar',{ 
     mode: "range", 
     onChange: function(dates) { 
      if(dates.length>1){ 
       $("#formdate .from").val(+dates[0]/1000); 
       $("#formdate .to").val((+dates[1])/1000); 
       $("#formdate").submit(); 
      } 
     } 
    }); 
}); 

這些日期是POSIX日期,例如14905692002017-03-27 00:00:00

你可以看到我將它們除以1000;這是因爲我在MySQL中使用它們,所以它需要位於second而不是millisecond

這裏是我的日期時間選擇器:

enter image description here

當我這個有效第二次約會(這裏的第26號),它可撥打以上功能,並刷新頁面。如果我做了我的POSIX日期的回聲,我得到以下內容:

1488326400, 1490486400分別是3月1日和26日(正常行爲)。現在,我使用下面的函數在PHP中把它們轉換以可讀格式:

echo date('l jS \of F Y',$from); 
echo date('l jS \of F Y',$to); 

它顯示我以下內容:

Wednesday 1st of March 2017 
Sunday 26th of March 2017 

所以直到在這裏,一切正常!

但現在,如果我拿起一個日期等於或高於月27日,這裏就是的發生:

enter image description here

我做我的POSIX日期的回聲: 1490313600, 1490655600它們分別是第24和第28(如此沒問題)。

但是,當我使用的可讀格式PHP日期:

echo date('l jS \of F Y',$from); 
echo date('l jS \of F Y',$to); 

Friday 24th of March 2017 
Monday 27th of March 2017 

事實上,每一個日期我挑等於或以上27日將顯示爲前一天。

如果我使用echo date('l jS \of F Y',1490655600),同樣的問題,它會給我第二十七和第二十八。

怎麼了?

+0

_「有什麼問題?」 - 有人從未聽說過冬季/夏季。 – CBroe

+0

哦,親愛的......我花了幾個小時試圖理解它爲什麼不起作用,這是一件簡單的事情......你知道如何在PHP中處理這個問題嗎? – Will

+0

聽起來像你的PHP代碼並不尊重大多數國家在週末從冬季到夏季的過渡(星期天26:00 02:00 AM變成03:00 AM),而你的Javascript代碼**是**考慮到。如果您在日期格式中添加小時和分鐘,3月27日00:00的日期是否顯示3月26日23:00? **編輯**有人打我:-) – rickdenhaan

回答

0

正如評論中所說,這是由於冬季/夏季時間。