【发布时间】:2020-10-28 20:04:45
【问题描述】:
在 Java 上,我愿意
Date minDate = new Date(year,month,1);
Date maxDate = new Date(year,month,31);
过滤从第 1 天到第 31 天的订单。但是对于某些月份(有 30 天)和更少的 2 月,这最终会找到下个月第 1、2 天甚至第 3 天的订单。
我怎样才能创建一个准确跨越整个月的minDate 和maxDate?
这些数据值是由另一端的 mongodb 读取的,但如果可能的话,我想在 java 端这样做。
【问题讨论】:
-
使用
java.timeAPI 很容易解决这个问题。你有什么理由不使用它? -
你在使用
java.util.Date吗?使用java.time.LocalDate或 Joda Time,您可能会更轻松。 -
(1) 不要使用
Date。该课程设计不良且早已过时。使用 java.time。 (2) 选择时区。在所有时区,月份既不是在同一时间点结束也不是在同一时间点开始。 (3) 使用半开:将月份表示为从本月第一刻到下个月第一刻不包含的区间。