我從GAE文檔中瞭解到生產服務器時區始終是UTC。在本地開發時,服務器時區設置爲CET。有沒有辦法強制本地開發服務器也運行UTC?Google應用引擎 - 本地開發服務器時區
開發服務器在Mac OS上運行。
感謝,
雨果
我從GAE文檔中瞭解到生產服務器時區始終是UTC。在本地開發時,服務器時區設置爲CET。有沒有辦法強制本地開發服務器也運行UTC?Google應用引擎 - 本地開發服務器時區
開發服務器在Mac OS上運行。
感謝,
雨果
突然發現答案。爲了設置服務器時區,只需進入Eclipse,「運行配置」,然後選擇「虛擬機參數」並添加以下「-Duser.timezone = UTC」。
這將在此情況下將服務器時區設置爲所需的值(UTC)。這非常方便,因爲Google App Engine生產將始終運行UTC,而開發服務器(至少在我的情況下)是使用本地時區運行的。最終結果是我在dev和prod之間有不同的行爲。
Hugues
那麼你可以使用此同時節省了時間價值,您的數據存儲轉換爲特定的時區。
DateFormat utcFormat = new SimpleDateFormat(patternString);
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat indianFormat = new SimpleDateFormat(patternString);
utcFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
Date timestamp = utcFormat.parse(inputString);
String output = indianFormat.format(timestamp);
謝謝Ankur。你是對的,這將改變時區,但僅限於當前查詢,我正在尋找一種方法將設置從服務器端更改爲全局設置。剛剛找到答案(見下文)。謝謝你的幫助 ! – Hugues
GAE devServer默認使用本地時區。
我用這個代碼用它強制UTC:
boolean isDevEnvironment = SystemProperty.environment.value() == SystemProperty.Environment.Value.Development;
if (isDevEnvironment) {
TimeZone.setDefault(DateTimeZone.UTC.toTimeZone());
DateTimeZone.setDefault(DateTimeZone.UTC);
}
你需要服務器啓動和初始化過程中運行一次,在非常。
請提交一個錯誤 - 這是dev和prod環境之間的一個意想不到的區別。 –
是的,我認爲這是意想不到的,因爲我一直髮現TZ的DEV服務器處理方式一直很糟糕。 GAE的最新版本(例如1.7.3)似乎總是使用本地TZ,而在它用於使用UTC之前,除非您點擊服務器的「重新啓動」按鈕。所以我總是被迫停止並重啓服務器。 – doright