这是我的代码段。我的当地时区是“亚洲/孟买”。

    SimpleDateFormat isoFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
    Date date1 = isoFormat.parse("03/01/2016 09:01 AM");
    isoFormat.setTimeZone(TimeZone.getTimeZone("Asia/Mumbai"));

    isoFormat.applyPattern("dd MMM yyyy HH:mm:ss z");
    System.out.println("Current Date and Time in IST time zone: " + isoFormat.format(date1));


但是在输出中,我得到:

IST时区的当前日期和时间:2016年3月1日格林尼治标准时间

谁能说出为什么覆盖时区(也是我的本地时区)可以将其更改为GMT吗?

尽管对于JST或SGT来说,相同的代码也可以正常工作。

    isoFormat.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
    isoFormat.applyPattern("dd MMM yyyy HH:mm:ss z");
    System.out.println("Current Date and Time in SGT time zone: " + isoFormat.format(date1));

    isoFormat.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
    isoFormat.applyPattern("dd MMM yyyy HH:mm:ss z");
    System.out.println("Current Date and Time in JST time zone: " + isoFormat.format(date1));


输出:

SGT时区的当前日期和时间:2016年3月1日SGT

JST时区的当前日期和时间:JST 2016年3月1日12:31:00

最佳答案

尝试以下代码:

isoFormat.setTimeZone(TimeZone.getTimeZone(“ Asia / Kolkata”));

10-04 10:11