将GMT时间转换为当地时区 - 问题

时间:2014-09-01 10:36:27

标签: android

我正在尝试将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:\t\t" + sdfgmt.format(inptdate));
    System.out.println("Current Time:\t" + sdfmad.format(inptdate));
    res = sdfmad.format(inptdate);

GMT时间返回00:00 am。我无法将上午9:00的gmt时间转换为本地设备时区(GMT + 5:30)

1 个答案:

答案 0 :(得分:0)

试试这个:

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());