2013-10-04 41 views
0

我試圖顯示通過我的webapp中的HTTP請求發送的日期。服務器中顯示的日期與我預期的不同

在區域環境中,發送的日期顯示正確,但是當webapp部署在服務器上時,顯示的日期對應於服務器上的當前日期,而不是我發送的日期。 HTTP請求的

例子: 發送HTTP請求: HTTP:// ... persoDate = 「2013年3月10日11時29分55秒」

這裏是我的代碼:

def initDate = new SimpleDateFormat("d/M/yyyy H:m:s").parse(params["persoDate"].replaceAll(/"/, '')) 

MyInstance.addToAbList(new BOSSession(setDateSession:initDate)) 

MyInstance.save(flush: true) 

回答

1

您錯過了這個日期/時間預計會在的時區。在您的本地計算機上,它可能是您所期望的 - 無論如何這是您的計算機,並且很可能會顯示您當前所處的時間。然而,服務器可能在UTC或任何其他時區,並根據該時區解釋日期。現在,如果您解析它,然後將其轉換爲當地時區,則根據您的本地計算機和服務器在時區方面的「距離」,您最多可以關閉24小時。

按照你的意見:

Java類型日期是始終沒有時區,你需要通過日曆,以便做時區處理爲好。這是在存儲或顯示日期期間可能發生的情況。首先,您需要找出問題所在:即解析,存儲(數據庫中實際存在的內容)或顯示已寫入數據庫的值。此外,您可能需要明確地將預期時區保存到數據庫,以便在稍後顯示值時重現該時區。

步驟測試:

  • 什麼是你的本地計算機的時區?服務器的時區是什麼?數據庫服務器的?
  • 存儲到數據庫的內容是什麼?它是否包含時區?
  • 你從數據庫中讀取什麼?
  • 顯示給用戶的是什麼?根據您所做的格式設置,這也可能會進行時區計算。

只要您找出哪些不同的步驟需要更正,您就有更深入的瞭解。我不能從這裏告訴你哪個步驟是你的問題,因此沒有代碼示例...(另外,我沒有長時間運用我的時髦肌肉)抱歉。

如果您處於Web應用程序中,請確保您知道用戶實際期望的時區。如果您只需要處理單個時區(並且額外額外額外確信不會有另一個時區),只需將您的服務器設置爲您要處理的時區以及您的所有用戶都在。此假設將中斷遲早,但現在你設置:(

+0

我發現有關此常規區的一些信息: http://groovy.codeplex.com/wikipage?title=Dates%20and%20Times 但我不知道如何在我的代碼中包括TimeZone 我基於在法國添加,所以在我的代碼中添加了這一行: System.setProperty('user.timezone','GMT') – Jils

+0

我也試過這個: initDate.setTimeZone(時區。getTimeZone(「GMT」)) 但我有錯誤: groovy.lang.MissingMethodException:沒有方法的簽名:java.util.Date.setTimeZone()適用於參數類型:(sun.util.calendar.ZoneInfo)值:[sun.util.calendar.ZoneInfo [id =「GMT」,offset = 0,dstSavings = 0,useDaylight = false,transitions = 0,lastRule = null]] 可能的解決方案:setTime(long) – Jils

+0

感謝您的解釋,我會按照這些步驟找出解決方案。 – Jils

相關問題