如何将 String 转换为 Instant 将日期字符串连接到时间字符串?

How do I convert String to Instant concatenating a date string to a time string?

我需要将此字符串转换为 Instant,我是这样做的:

String inputStartDate = startDate+" 00:00:00.000";
String inputEndDate = endDate+" 23:59:59.999";

startDate 只是日期,因为我从另一个调用中获取了字符串,但我需要保持小时不变,与 endDate 的方式相同。

然后,我像这样转换为 Instant:

Instant newStarDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(inputStartDate).toInstant();
Instant newEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(inputEndDate).toInstant();

但是当我转换成instant时,它转换错了。 例如:

startDate="2022-02-04"
endDate="2022-02-04"

当我进行连接时,字符串是这样的:

inputStartDate: "2022-02-03 00:00:00.000"
inputEndDate: "2022-02-04 23:59:59.999"

然后转成瞬间的结果是这样的,不知道哪里不对

newStartDate:"2022-02-03T03:00:00Z"
newEndDate:"2022-02-05T02:59:59.999Z"

我需要 yyyy-MM-dd HH:mm:ss.SSS 来执行 mongodb 查询,它需要是 Instant。

我得到了答案,它比我想象的要容易。

与其给它一个 SimpleDateFormat,不如像这样直接将它转换为 Instant:

Instant finalStartDate = Instant.parse(startDate+"T00:00:00.000Z");
Instant finalEndDate = Instant.parse(endDate+"T23:59:59.999Z");

您必须添加 T 和 Z。