2011-11-14 11 views
1

アンドロイドの日付とカレンダーには多くの問題があり、別のものをキャッチしています。私は日付にいくつかの日付(文字列としてのストア)を解析する必要があります。私はこの方法を書いた: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つのタイムゾーンに解析され、いくつかの日付のGMTにされています+2。すべての日付を同じタイムゾーンに取得するにはどうすればよいですか?

答えて

2

デンマークは2012年3月25日に中央ヨーロッパ標準時(GMT + 1)から中央ヨーロッパ夏時間(GMT + 2)に切り替わります。作業中のデータにこれらの夏時間の変更が反映されていない場合は、 SimpleDateFormatインスタンスにデンマーク語のロケールを入力してください。

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

答えが間違っていても:良いキャッチ! –

+0

本当に素敵な答え。私は明日それを試し、正しいとあなたの答えをマークします! –

+1

タイムゾーンの切り替えを避けるため、このコードを使用します。TimeZone.setDefault(新しいSimpleTimeZone(60 * 60 * 1000、 "CET")); –

関連する問題