2012-09-04 62 views
1

a)。我有3個字符串代表日期,時間和時間區域;例如:Android日期時區問題

String date = "2012-09-04"; 
String time = "01:30:17"; 
String timeZone = "UTC"; 

我想用這些字符串創建日期。

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
Date createdDate = formatter.parse(date + " " + time + " " + timeZone); 

不起作用 - 我收到消息「Unparseable date」。 b)。如何在特定時間區域獲取Android設備日期? 我發現只是一個當前時間轉換爲,例如,UTC時區的方法:

Calendar cldr = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
String dateInUTCTimeZone = sdf.format(cldr.getTime()); 

,但我想要的結果是一個Date對象。

+0

這不是Android的特定。你有沒有試過用'Java時區'或類似的搜索引擎? – Ridcully

+0

在解析make字符串之外的時候會添加它並嘗試整個字符串解析 – Khan

回答

3

字符串「UTC」不是日期解析器可以識別的。如果您需要使用這個常量定義UTC,那麼下面的日期格式應該爲你工作

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 'UTC'"); 

,但我強烈建議TU使用rfc3990標準:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

,然後代表你日期如下字符串(2012-09-04T13:24:59Z)。

最後,如果你想表示一個日期是在UTC到一定的時區,使用以下格式之前:

sdf.setTimeZone(TimeZone.getDefault()); //Choose the TimeZone you need