在 398+0000 之间是否有带有奇怪 + 的时间戳格式?
398 部分是秒(毫秒)部分,而+0000 部分是区域偏移部分。
您可以使用格式模式uuuu-MM-dd'T'HH:mm:ss.SSSX 将2020-12-03T05:35:59.398+0000 解析为OffsetDateTime。
演示:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String text = "2020-12-03T05:35:59.398+0000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX");
OffsetDateTime odt = OffsetDateTime.parse(text, formatter);
System.out.println(odt);
}
}
输出:
2020-12-03T05:35:59.398Z
查看DateTimeFormatter documentation page,了解有关用于格式化的字母的更多信息。
您可以使用OffsetDateTime 的isBefore 和isAfter 函数来比较它的两个实例。
演示:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String text = "2020-12-03T05:35:59.398+0000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX");
OffsetDateTime odt = OffsetDateTime.parse(text, formatter);
OffsetDateTime odtNow = OffsetDateTime.now();
System.out.println(odtNow.isBefore(odt));
System.out.println(odtNow.isAfter(odt));
}
}
输出:
false
true
通过 Trail: Date Time 了解有关现代日期时间 API 的更多信息。如果您正在为一个 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。
java.util 的日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到modern date-time API。由于java.sql.Timestamp extends java.util.Date,建议也停止使用它。但是,无论出于何种原因,如果您仍想在新式和旧式日期时间 API 之间使用转换,请使用 Instant 作为桥梁。
import java.sql.Timestamp;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String text = "2020-12-03T05:35:59.398+0000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX");
OffsetDateTime odt = OffsetDateTime.parse(text, formatter);
Instant instant = odt.toInstant();
Timestamp timestamp = new Timestamp(instant.toEpochMilli());
System.out.println(timestamp);
}
}
输出:
2020-12-03 05:35:59.398