2012-10-14 37 views
0

所以正如標題所說,我一直在失去一天,因爲我從MySQL到我的JavaScript,我不知道。當你插入數據庫時​​(假設我把10/14/12的數據庫讀取爲10/13/12),你失去了一天,而且當我從數據庫讀取數據時,我也失去了一天(我獲取10/13/12,現在讀取10/12/12)。似乎失去了一天的日期轉換

這裏是我的過程:

//date input from jquery ui datepicker  
$('#datepicker'+p).datepicker({numberOfMonths: 3, showButtonPanel: true, dateFormat: "D, d M, yy"}); 

//date sent to php to upload to mysql so there is a format conversion 
$start = date("Y-m-d", strtotime($startdate)); 

現在到下載:

//date taken from mysql no modifications 

//date modified to be sent to viewer in a nicer format 
var start = $.datepicker.formatDate('D, d M, yy', new Date (item.start)); 

我想:這個問題似乎發生兩種方式,我敢肯定我的javascript不是問題並且因爲只有php轉換似乎排除了這兩種方式。這可能是我的MySQL服務器的問題嗎?還要注意日期保存在mysql中,類型爲DATE!

//as requested my sql code 
INSERT INTO classdates (start, end, hours, days, off, notes, type, branch) VALUES(:start, :end, :hours, :days, :off, :notes, :type, :branch) 
+0

你沒有顯示*你如何*插入或提取日期到MySQL。 –

+0

好吧,我更新了我的問題 – Osman

+0

這也發生在去mysql的路上,所以它不能成爲插入問題。 – Osman

回答

2

我想通了我的問題是javascript new Date() function。這不僅僅是轉換日期,還要操縱它。我不得不適應時區變化。

1

可以轉換爲unixtime在客戶端(JavaScript)的日期,然後用FROM_UNIXTIMESTAMP()插入到MySQL表。它將允許您安全地將clent的時間轉換爲服務器時間。

+0

如何從服務器到客戶端如何解決該問題?這真的可能是失去兩天的問題嗎?獲取失敗的日子不會重新獲得或至少保持不變?爲什麼我在獲取時失去了一天? – Osman

+1

我只能說 - 如果你操作unixtime - 你是安全的,如果你使用rfc-2822格式的日期,你也是安全的,在任何其他情況下,當你處理日期時,它可能是絕對無法預料的結果 –