使用 SimpleDateFormat 时的 Java 17 问题

问题描述 投票:0回答:1

我有一个类似的方法

public static Long getTime(String date) throws ParseException {

DateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
Date fd = f.parse(date);
long t = fd.getTime();
return t / 1000;

}

在使用 java 8 表示字符串“20279456456456--139900-17T11167:47:1488Z”时,它抛出异常,但在使用 java 17 时,它给出值“-6628509492807388”,知道发生了什么吗?

java java-17
1个回答
0
投票

该类/方法已知有问题,已被弃用。 java.time 包引入了更精确的类。

在你的情况下,你可以使用这样的东西:

public static Long getTime(String date) throws ParseException {
    Instant i = Instant.parse(date);
    return i.getEpochSecond();
}

参见 https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/time/Instant.html#parse(java.lang.CharSequence)

© www.soinside.com 2019 - 2024. All rights reserved.