我有一個Web應用程序,並且如果客戶端(在英國這是在時區UTC + 0000)我發送的日期參數作爲一個字符串,像這樣:Java:日期和抵消問題?
但是當我收到此字符串我的Java REST服務,並嘗試使用SimpleDateFormater將其解析爲日期對象,它假設即時消息的內容是:「這是UTC時間10:00,im位於UTC + 0000時區」,因此它保存爲10 :上午00時UTC時間,而不是上午09:00 UTC時間,這是從10:00 AM BST(+0000)開始的正確對話。
這裏是我的Java代碼示例:
String dateString = "2012-03-28 10:00:00 +0000";
Timestamp timestamp= null;
try{
DateFormat planningDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date date = planningDateFormat.parse(dateString);
timestamp = new Timestamp(date.getTime());
System.out.println("Time stamp value is: " + timestamp.getTime());
System.out.println("Date value after parse: " + date);
System.out.println("Time value passed in was: " + dateString);
}
catch(Exception e){}
,輸出:
$ java TimeTest
Time stamp value is: 1332917100000
Date value after parse: Wed Mar 28 11:00:00 BST 2012
Time value passed in was: 2012-03-28 10:00:00 +0000
我怎樣才能解決這個問題呢?
是的,我知道UTC是如何工作的,我試圖說的是我有時間在BST而不是UTC。林不發送它作爲UTC,我發送它代表10AM BST,並希望JAVA轉換我的10:00 AM BST到上午9:00 UTC。 – 2012-03-29 12:19:27
@Mo .:由於您已在您的帖子中聲明瞭*次數*,因此當* *不是*時,英國處於「UTC + 0000」時,您顯示*不知道UTC如何工作。 BST是* not * +0000。英國*不是UTC + 0000時區。時區偏移給出的是與UTC的偏移量,而不是「任何時區內的標準時間」。 – 2012-03-29 12:21:22
我的意思是,我的時間基本上代表了英國時間(上午10:00,當地時間,而不是上午10:00 UTC) – 2012-03-29 12:22:41