2012-09-04 60 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