Разбор форматированной даты дает ноль в Java 11, но дает правильный вывод в Java 8 - PullRequest
0 голосов
/ 22 октября 2018

Это код, который работает правильно в 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 голосов
/ 22 октября 2018

Вы используете разные шаблоны форматирования для форматирования и последующего анализа.

Попробуйте

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

вместо

currentDateHongkong = new SimpleDateFormat(dateFormat).parse(stringFormatDate, new ParsePosition(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...