解析格式化的日期在Java 11中为空,但在Java 8中给出正确的输出

时间:2018-10-22 10:33:44

标签: java datetime-format java-11

这是在Java 8中正常工作并打印所需输出的代码。

import java.util.*;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;

public class Java11 {

    public static void main(String args[]) throws Exception {

        // Hong kong timezone ID.
        String hongkongTimezone = "Asia/Hong_Kong";
        String dateFormat = "MMM dd, yyyy HH:mm:SS";

        //Current date of local time zone.
        Date date = new Date();

        // Current date of HongKong.
        Date currentDateHongkong = null;

        DateFormat hongkongDateFromat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US);

        // Set hongkong time zone ID.
        hongkongDateFromat.setTimeZone(TimeZone.getTimeZone(hongkongTimezone));
        String stringFormatDate = hongkongDateFromat.format(date);

        currentDateHongkong = new SimpleDateFormat(dateFormat).parse(stringFormatDate, new ParsePosition(0));

        System.out.println(currentDateHongkong);
    }
}

在Java 8上执行时输出如下

Mon Oct 22 06:28:00 IST 2018

但是当我在Java 11上执行相同的代码时,我得到null

1 个答案:

答案 0 :(得分:0)

您使用不同的格式模式进行格式化和以后的解析。

尝试

currentDateHongkong = hongkongDateFromat.parse(stringFormatDate, new ParsePosition(0));

代替

currentDateHongkong = new SimpleDateFormat(dateFormat).parse(stringFormatDate, new ParsePosition(0));