0
有两个字符串最简单的方式来改变一次特别的时区
String date = "9/13/2012";
String time = "5:48pm";
时间为GMT + 0,我想将其更改为GMT + 8,什么是改变一次最简单的方法特定时区
有两个字符串最简单的方式来改变一次特别的时区
String date = "9/13/2012";
String time = "5:48pm";
时间为GMT + 0,我想将其更改为GMT + 8,什么是改变一次最简单的方法特定时区
SimpleDateFormat
设置为UTC时间SimpleDateFormat
设置为你所在的时区的解析Date
值解析它(这很可能是“UTC + 8”以外的东西 - 你应该找出你的真的想要哪个TZDB时区ID例如:
SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy h:mma", Locale.US);
inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC");
Date date = inputFormat.parse(date + " " + time);
// Or whatever format you want...
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
outputFormat.setTimeZone(targetTimeZone);
String outputText = outputFormat.format(date);
(如果你可以使用Joda Time代替,那简直太好了 - 但我明白,这是一个Android应用程序相当大)
乔达时间库提供了一组用于在多个时区中处理日期/时间的对象。 http://joda-time.sourceforge.net/
事情是这样的,例如:
String date = "9/13/2012";
String time = "5:48pm";
String[] dateParts = date.split("/");
Integer month = Integer.parseInt(dateParts[0]);
Integer day = Integer.parseInt(dateParts[1]);
Integer year = Integer.parseInt(dateParts[2]);
String[] timeParts = time.split(":");
Integer hour = Integer.parseInt(timeParts[0]);
Integer minutes = Integer.parseInt(timeParts[1].substring(0,timeParts[1].lastIndexOf("p")));
DateTime dateTime = new DateTime(year, month, day, hour, minutes, DateTimeZone.forID("Etc/GMT"));
dateTime.withZone(DateTimeZone.forID("Etc/GMT+8"));