我正在尝试将GMT时间转换为本地设备时区。但是GMT时间
String res;
TimeZone tz = TimeZone.getDefault();
String strTimeZone = tz.getDisplayName(false, TimeZone.SHORT);
SimpleDateFormat sdfgmt = new SimpleDateFormat("HH:mma");
sdfgmt.setTimeZone(TimeZone.getTimeZone("GMT"));
SimpleDateFormat sdfmad = new SimpleDateFormat("HH:mma");
sdfmad.setTimeZone(TimeZone.getTimeZone(strTimeZone));
String inpt = "09:00am";
Date inptdate = null;
try {
inptdate = sdfgmt.parse(inpt);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("GMT:tt" + sdfgmt.format(inptdate));
System.out.println("Current Time:t" + sdfmad.format(inptdate));
res = sdfmad.format(inptdate);
GMT时间返回为00:00am。我无法将9:00am GMT时间转换为本地设备时区(GMT+5:30)
试试这个:
String inpt = "09:00amZ";
Date date = null;
try {
date = new SimpleDateFormat("HH:mmaX").parse(inpt);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SimpleDateFormat sdf = new SimpleDateFormat("HH:mma");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+05:30"));
System.out.println(sdf.format(date));
请确保在输入的末尾添加一个"Z",以表明此时间在GMT时区。
如果您需要设备时区的默认值而不是硬编码,请替换sdf.setTimeZone(TimeZone.getTimeZone("GMT+05:30"));
通过sdf.setTimeZone(TimeZone.getDefault());