繁体   English   中英

检查当前日期日期是否在当前月份内

[英]Check if current date date is within current month

我知道有几个类似的问题。 但我的有两点不同

  1. 仅使用java.util.*类(我们的服务器目前仅使用这些类)
  2. 我需要确定给定日期是否在指定日期之后或代表同一天(通常是今天)

这就是我得到的:

if ((new Date().getMonth() == object.getDate().getMonth() && new Date().getYear() == object.getDate().getYear()
                                    && new Date().getDay() == object.getDate().getDay())
                                    || (new Date().after(object.getDate()) && new Date().getMonth() == object.getDate().getMonth()
                                            && new Date().getYear() == object.getDate().getYear()))

这东西有效,但老实说 - 看起来并不优雅。 有没有办法以更漂亮的方式做到这一点?

如果您想使用您的解决方案,无论如何都值得优化它。 例如,只创建一次new Date() 同样为了使其更具可读性和更短,在所有这些比较之上提取object.getDate()作为变量。 解决问题的另一种方法是:

    public static void main(String[] args) {
        Calendar min = getMinDateOfMonth();
        Calendar max = getMinDateOfMonth();
        max.set(Calendar.MONTH, min.get(Calendar.MONTH) + 1);
        if (min.getTime().before(object.getDate()) && max.getTime().after(object.getDate())) {
            // you're inside the month
        }
    }

    private static Calendar getMinDateOfMonth() {
        Calendar min = Calendar.getInstance();
        min.set(Calendar.DAY_OF_MONTH, 1);
        min.set(Calendar.HOUR, 0);
        min.set(Calendar.MINUTE, 0);
        min.set(Calendar.SECOND, 0);
        min.set(Calendar.MILLISECOND, 0);
        return min;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM