Java –检查日期是否大于6个月

本文显示了一些Java示例来检查Date是否早于30天或6个月。

1. LocalDate

1.1对于Localdate ,最简单的解决方案是使用新的Period来检查LocalDate是否早于6个月。

JavaDate.java
package com.mkyong;

import java.time.LocalDate;
import java.time.Period;

public class JavaDate {

    public static void main(String[] args) {

        LocalDate currentDate = LocalDate.now();
        LocalDate newDate = LocalDate.of(2019, 8, 23);

        System.out.println(currentDate);              // 2020-02-24
        System.out.println(newDate);                  // 2019-08-23

        Period period = Period.between(currentDate, newDate);
        System.out.println(period.getMonths());
        if (period.getMonths() <= -6) {
            System.out.println("date: " + newDate + " is older than 6 months!");
        }
    }

}

输出量

2020-02-24
2019-08-23
-6
date: 2019-08-23 is older than 6 months!

1.2或者,创建一个Localdate并使用LocalDate.plusMonths(-6);返回到6个月前LocalDate.plusMonths(-6); 并使用isBefore()比较LocalDate

JavaDate.java
package com.mkyong;

import java.time.LocalDate;

public class JavaDate {

    public static void main(String[] args) {

        LocalDate currentDate = LocalDate.now();                  

        LocalDate sixMonthsAgo = LocalDate.now().plusMonths(-6);  // 6 months ago

        System.out.println(currentDate);                          // 2020-02-24
        System.out.println(sixMonthsAgo);                         // 2019-08-24

        LocalDate newDate = LocalDate.of(2019, 8, 23);            // 2019-08-23

        // is this date older than 6 months?
        if (newDate.isBefore(sixMonthsAgo)) {
            System.out.println("date: " + newDate + " is older than 6 months!");
        }

    }

}

输出量

2020-02-24
2019-08-24
date: 2019-08-23 is older than 6 months!

2. LocalDateTime

本示例检查LocalDateTime是否大于6个月。 对于包含时间的日期,我们可以使用ChronoUnit.{unit}.between

JavaDate2.java
package com.mkyong;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class JavaDate2 {

    public static void main(String[] args) {

        LocalDateTime currentDate = LocalDateTime.now();

        LocalDateTime sixMonthsAgo = LocalDateTime.now().plusMonths(-6);

        System.out.println(currentDate);                                // 2020-02-24
        System.out.println(sixMonthsAgo);                               // 2019-08-24

        LocalDateTime newDate = LocalDateTime.of(2019, 8, 23, 0, 0, 0); // 2019-08-23

        // is this date older than 6 months?
        if (newDate.isBefore(sixMonthsAgo)) {
            System.out.println("[isBefore] date: " + newDate + " is older than 6 months!");
        }

        long between = ChronoUnit.MONTHS.between(currentDate, newDate);
        System.out.println(between);
        if (between <= -6) {
            System.out.println("[ChronoUnit] date: " + newDate + " is older than 6 months!");
        }

    }

}

输出量

2020-02-24T18:23:05.159116
2019-08-24T18:23:05.159314
[isBefore] date: 2019-08-23T00:00 is older than 6 months!
-6
[ChronoUnit] date: 2019-08-23T00:00 is older than 6 months!

3. ZonedDateTime

3.1此示例检查ZonedDateTime是否早于30天。

JavaDate3
package com.mkyong;

import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;

public class JavaDate3 {

    public static void main(String[] args) {

        ZonedDateTime now = ZonedDateTime.now();         
        ZonedDateTime thirtyDaysAgo = now.plusDays(-30);        // move back 30 days

        System.out.println("now :" + now);                      // 2020-02-24
        System.out.println("thirtyDaysAgo :" + thirtyDaysAgo);  // 2020-01-25

        ZonedDateTime ninetyDaysAgo = now.plusDays(-90);        // move back 90 days
        System.out.println("ninetyDaysAgo :" + ninetyDaysAgo);  // 2019-11-26

        if (ninetyDaysAgo.isBefore(thirtyDaysAgo)) {
            System.out.println("[isBefore()]" + thirtyDaysAgo + " is older than 30 days!");
        }

        long between = ChronoUnit.DAYS.between(now, ninetyDaysAgo);
        System.out.println(between);
        if (between < -30) {
            System.out.println("[ChronoUnit]" + thirtyDaysAgo + " is older than 30 days!");
        }
    }

}

输出量

now :2020-02-24T18:39:10.204342+08:00[Asia/Kuala_Lumpur]
thirtyDaysAgo :2020-01-25T18:39:10.204342+08:00[Asia/Kuala_Lumpur]
ninetyDaysAgo :2019-11-26T18:39:10.204342+08:00[Asia/Kuala_Lumpur]

[isBefore()]2020-01-25T18:39:10.204342+08:00[Asia/Kuala_Lumpur] is older than 30 days!
-90
[ChronoUnit]2020-01-25T18:39:10.204342+08:00[Asia/Kuala_Lumpur] is older than 30 days!

4.压延机

4.1此示例检查java.util.Calendar是否大于6个月。

JavaDate4.java
package com.mkyong;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class JavaDate4 {

    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args) {

        Calendar sixMonthsAgo = Calendar.getInstance();             // Current Date
        System.out.println(sdf.format(sixMonthsAgo.getTime()));     // 2020-02-24

        sixMonthsAgo.add(Calendar.MONTH, -6);                       // 6 months ago
        System.out.println(sdf.format(sixMonthsAgo.getTime()));     // 2019-08-24

        Calendar newDate = new GregorianCalendar(2019, 5, 10);      // 2019-06-10

        if (newDate.before(sixMonthsAgo)) {
            System.out.println("newDate : " + sdf.format(newDate.getTime()) + " is older than 6 months");
        }


    }

}

输出量

2020-02-24
2019-08-24
newDate : 2019-06-10 is older than 6 months

5.日期

5.1此示例检查java.util.Date是否早于30天。

JavaDate5.java
package com.mkyong;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class JavaDate5 {

    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date today = new Date();
        System.out.println("today : " + sdf.format(today));         // 2020-02-24

        Calendar thirtyDaysAgo = Calendar.getInstance();
        thirtyDaysAgo.add(Calendar.DAY_OF_MONTH, -30);             // 2020-01-25

        Date thirtyDaysAgoDate = thirtyDaysAgo.getTime();
        System.out.println("thirtyDaysAgo : " + sdf.format(thirtyDaysAgoDate));

        Date newDate = sdf.parse("2009-12-31");

        if (newDate.before(thirtyDaysAgoDate)) {
            System.out.println(sdf.format(newDate) + " is older than 30 days!");
        }

    }

}

输出量

today : 2020-02-24
thirtyDaysAgo : 2020-01-25
2009-12-31 is older than 30 days!

参考文献

翻译自: https://mkyong.com/java8/java-check-if-the-date-is-older-than-6-months/

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值