2012-09-13 41 views

回答

2
  • 使用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应用程序相当大)

1

乔达时间库提供了一组用于在多个时区中处理日期/时间的对象。 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")); 
相关问题