假设我的设备在澳大利亚(GMT + 10:00)。
我有一个从API收到的日期“ 2016-04-22T17:45:00 + 02:00”。
我想在原始时区(GMT + 02:00)很好地显示它。
因此,我将SimpleDateFormat与“ yyyy-MM-dd'T'HH:mm:ssZZZZZ”一起使用。
String date = "2016-04-22T17:45:00+02:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
Run Code Online (Sandbox Code Playgroud)
但是不幸的是,我找不到一种显示日期的干净方法:
sdf.format(cal.getTime());
Run Code Online (Sandbox Code Playgroud)
使用设备时区。
因此,我“手动”解析了日期以提取时区以将其设置在日历中。
cal.setTimeZone(TimeZone.getTimeZone("GMT" + date.substring(date.length() - 6, date.length())));
Run Code Online (Sandbox Code Playgroud)
但这似乎并不能解决问题。
我怎样才能做到这一点?