解析带有“America/New_York”之类的时区的日期

alg*_*ell 3 java timezone parsing date

尝试解析具有详细时区的日期:

var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
sdf.parse("2022-09-02 02:30:10 America/New_York");
Run Code Online (Sandbox Code Playgroud)

得到:

java.text.ParseException: Unparseable date: "2022-09-02 02:30:10 America/New_York"
Run Code Online (Sandbox Code Playgroud)

尝试:在日期格式化程序中指定“z”、“zzz”、“X”和“XXX”。

Fed*_*oca 5

您可以使用现代 Time API 来代替DateTimeFormatter。(长)Zone-id 的符号是VV

例如

System.out.println(ZonedDateTime.parse(
                         "2022-09-02 02:30:10 America/New_York", 
                         DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss VV")));
Run Code Online (Sandbox Code Playgroud)

输出

2022-09-02T02:30:10-04:00[America/New_York]
Run Code Online (Sandbox Code Playgroud)