【发布时间】:2022-02-08 01:15:45
【问题描述】:
我需要将此字符串转换为 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();
但是当我转换为即时时,它转换错误。 例如:
startDate="2022-02-04"
endDate="2022-02-04"
当我做 concat 时,字符串是这样的:
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 只返回一个简单的日期。
-
你有一个学习曲线在你面前。处理日期、时间和时区是一个复杂的主题,不容易掌握。你需要熟悉
java.time.*中的类 -
不要使用
23:59:59.999来代表一天的结束。您在一天中遗漏了 999 999 纳秒。使用第二天的第一刻,并认为它是独一无二的。
标签: java datetime time simpledateformat