首页 > 解决方案 > 如何创建准确跨越整个月的 2 个 java(最小和最大日期)

问题描述

在 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 端执行此操作。

标签: javamongodb

解决方案


java.util.Date已弃用,并且有充分的理由。在我本地的 Scala REPL 上:

scala> import java.util.Date
import java.util.Date

scala> new Date(120, 9, 1, 0, 0)
       ^
       warning: constructor Date in class Date is deprecated: see corresponding Javadoc 
for more information.
res3: java.util.Date = Thu Oct 01 00:00:00 EDT 2020

scala> new Date(120, 9, 31, 23, 59)
       ^
       warning: constructor Date in class Date is deprecated: see corresponding Javadoc 
for more information.
res4: java.util.Date = Sat Oct 31 23:59:00 EDT 2020

如果你有 JShell,你应该会看到类似的东西。

好的,所以不是整个Date类都被弃用了,但几乎所有的构造函数和它的几个 getter 和 setter 都被弃用了。也许java.time.LocalDate会对你更好。

scala> import java.time.LocalDate
import java.time.LocalDate

scala> LocalDate.of(2020, 10, 1)
res5: java.time.LocalDate = 2020-10-01

scala> LocalDate.of(2020, 10, 31)
res6: java.time.LocalDate = 2020-10-31

看,不需要从年份中减去 1900。轻松,轻松,美丽。


推荐阅读