根据服务器响应在Android App中设置时区
Posted
技术标签:
【中文标题】根据服务器响应在Android App中设置时区【英文标题】:Set Time Zone in Android App on the basis of server response 【发布时间】:2017-05-05 14:23:06 【问题描述】:我正在做一些工作,场景是什么 ,我从服务器接收日期和时间作为数据字段。 即 2016-12-20T16:22:00+05:00。 我有一个微调器,其中
*
(+12:00 到 -12:00)每小时值* 现在,我需要根据微调器值转换此日期和时间。 即如果微调器选择了 +12:00 然后它会像这样 2016-12-21T04:22:00+12:00。 请提出解决方案。 谢谢你:)
【问题讨论】:
你的问题不清楚。请详细说明 ***.com/questions/22814263/… 参考这个:) 如果用户选择了+12:00,是否要将时间增加12小时 是的,如果加上 +12 使时间 24+ 那么日期也应该改变。 您从服务器获取时间的格式和区域设置 【参考方案1】:尝试使用下面的 Java 字符串函数
String time="2016-12-20T16:22:00+05:00";
String[] s =time.split("'+'");
String time1=s[0];
String value=value from spinner;
SimpleDateFormat readDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
readDate.setTimeZone(TimeZone.getTimeZone("GMT")); // missing line
Date date = null;
try
date = readDate.parse(time1);
catch (ParseException e)
e.printStackTrace();
SimpleDateFormat writeDate = new SimpleDateFormat("dd.MM.yyyy, HH.mm.ss");
writeDate.setTimeZone(TimeZone.getTimeZone("GMT+"+value));
//final time string
String s1 = writeDate.format(date);
【讨论】:
亲爱的 Rajesh,您的解决方案部分正确,但只设置了 GMT 时间,我需要更改日期以及如果添加的时间超过了数字 24。那么我需要注意年份的变化和月也是如此。即,如果我从服务器获得时间(2016-12-31T22:22:22+05:00)并且我选择的 GMT 是 +12:00,那么它会像这样 2017-1-1T05:22:22+12:00请注意不同的日期 我明白你需要什么。查看上面的新代码! 你的解决方案是对的 :) 位错误更正在逗号内使用“+”并使用字符串 s1。 好的..将其标记为正确答案,以便帮助其他人。【参考方案2】:试试这个方法
public String convertTimeZone(String date, String timeZone) throws ParseException
StringBuffer buffer = new StringBuffer(date);
date = buffer.reverse().toString().replaceFirst(":","");
date = new StringBuffer(date).reverse().toString();
SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
inFormat.setTimeZone(TimeZone.getTimeZone("GMT" + timeZone));
Date toConvert = inFormat.parse(date);
date = inFormat.format(toConvert);
return new StringBuffer(date).insert(date.length()-2, ":").toString();
【讨论】:
以上是关于根据服务器响应在Android App中设置时区的主要内容,如果未能解决你的问题,请参考以下文章