将格林尼治标准时间隐藏到本地时区-问题



我正在尝试将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());

最新更新