这是在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
。
答案 0 :(得分:0)
您使用不同的格式模式进行格式化和以后的解析。
尝试
currentDateHongkong = hongkongDateFromat.parse(stringFormatDate, new ParsePosition(0));
代替
currentDateHongkong = new SimpleDateFormat(dateFormat).parse(stringFormatDate, new ParsePosition(0));