2011-11-14 45 views
1

有在Android上的日期和日曆很多問題,我抓到一個又一個。我必須將幾個日期(商店作爲字符串)解析爲日期。我寫的方法:SimpleDateFormat.parse返回不同​​的時區時間

private Date getDateFromString(String dateStr, String timeStr) { 
Date dateObj = null; 
SimpleDateFormat dateFormater = new SimpleDateFormat("dd. MMM yyyy HH:mm", new Locale("da", "DK")); 
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT+01:00")); 
    try { 
    dateObj = dateFormater.parse(dateStr + " " + timeStr); 
    } catch (ParseException parseExc) { 
    parseExc.printStackTrace(); 
} 
return dateObj; 
} 

和它的作品,但是當我嘗試登錄的結果,我看到一個輸出:

11-14 15:49:03.223: D/my date(560): Sun Mar 04 08:00:00 GMT+01:00 2012 
11-14 15:49:03.223: D/my date(560): Sun Mar 11 08:00:00 GMT+01:00 2012 
11-14 15:49:03.233: D/my date(560): Sun Mar 18 08:00:00 GMT+01:00 2012 
11-14 15:49:03.233: D/my date(560): Sun Mar 25 08:00:00 GMT+02:00 2012 
11-14 15:49:03.243: D/my date(560): Sun Apr 01 08:00:00 GMT+02:00 2012 

即一些日期被解析成GMT + 1個時區和一些日期,格林尼治標準時間+2。我怎樣才能將所有日期都放入同一時區?

回答

2

丹麥從中歐標準時間(GMT + 1)歐洲中部夏令時間(GMT + 2)25 2012年3月切換到如果你正在使用的數據不反映這些夏令時的變化,我建議不提供丹麥語區域到您的SimpleDateFormat例如:

SimpleDateFormat dateFormater = new SimpleDateFormat("dd. MMM yyyy HH:mm"); 
+0

即使它不應該是答案:好抓! –

+0

真的很好的答案。我明天會試一試,並將你的回答標爲正確! –

+1

爲了避免時區切換,我使用此代碼TimeZone.setDefault(新的SimpleTimeZone(60 * 60 * 1000, 「CET」)); –