java中如何灵活的比较日期大小

发布时间 2023-04-05 16:49:20作者: 欢乐豆123

java中如何灵活的比较日期时间大小

  在比较两个日期时间的大小之前,我们先了解两个需要用到的类:Date和Calendar

  1.  Date类

  java.util 包提供了 Date 类来封装当前的日期和时间

 1    public static void main(String[] args) {
 2         Date dNow = new Date();
 3         System.out.println("当前时间戳为:" + dNow.getTime());
 4         SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 5         System.out.println("当前时间格式化为:" + ft.format(dNow));
 6    }
 7 
 8   // 测试结果为:
 9   // 当前时间戳为:1680682212062  (毫秒时间戳)
10   // 当前时间格式化为:2023-04-05 04:10:12

   2.  Calendar类

   Calendar允许我们设置和获取日期数据的特定部分

 1     public static void main(String[] args) throws ParseException {
 2   
 3         // Calendar类的功能要比Date类强大很多
 4 
 5         Calendar c = Calendar.getInstance(); // 默认是当前日期
 6 
 7         // 把Calendar对象c1的年月日分别设这为:2009、6、12
 8         c.set(2009, 6, 12);
 9 
10         // 10天后的日期
11         c.set(Calendar.DATE, 10);
12         c.set(Calendar.YEAR, 2005);
13 
14         // 10天前的日期
15         c.set(Calendar.DATE, -10);
16 
17      }

   3. 日期和string的互转方法

   1) Date转String
   Date d=new Date();
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String ds=df.format(d);

   2)String转Date
   String ds=new String("2023-04-05 08:30:00");
   Date sd=ds.parse(ds);

   4. 比较给定时间是否在日期区间内

    利用Calendar的before和after两个方法

 1 package henry.date;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Calendar;
 6 import java.util.Date;
 7 
 8 public class DateDemo {
 9     public static void main(String[] args) throws ParseException {
10         DateDemo dateDemo = new DateDemo();
11         String addTime = new String("2023-04-05 05:00:00");
12         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
13 
14         / string转化为date类
15         Date sd1 = df.parse(addTime);
16         Calendar checkTime = Calendar.getInstance();
17         checkTime.setTime(sd1);
18         int hour=checkTime.get(Calendar.HOUR_OF_DAY);
19         System.out.println("hour:"+hour);
20 
21         boolean res = dateDemo.checkExistTimeRange(checkTime);
22         String str = res ? "是" : "否";
23         System.out.println("检查发布时间是否在特定时段:" + str);
24 
25     }
26 
27 
28     // 检查给定时间是否在特定时段:晚上19:30-凌晨4:29
29     public Boolean checkExistTimeRange(Calendar checkTime) {
30 
31         // 19:30:00
32         Calendar c1 = Calendar.getInstance();
33         c1.set(Calendar.HOUR_OF_DAY, 19);
34         c1.set(Calendar.MINUTE, 30);
35         c1.set(Calendar.SECOND, 0);
36 
37         // 23:59:59
38         Calendar c2 = Calendar.getInstance();
39         c2.set(Calendar.HOUR_OF_DAY, 23);
40         c2.set(Calendar.MINUTE, 59);
41         c2.set(Calendar.SECOND, 59);
42 
43         // 00:00:00
44         Calendar c3 = Calendar.getInstance();
45         c3.set(Calendar.HOUR_OF_DAY, 0);
46         c3.set(Calendar.MINUTE, 0);
47         c3.set(Calendar.SECOND, 0);
48 
49         // 04:29:00
50         Calendar c4 = Calendar.getInstance();
51         c4.set(Calendar.HOUR_OF_DAY, 4);
52         c4.set(Calendar.MINUTE, 29);
53         c4.set(Calendar.SECOND, 0);
54 
55 
56         if (checkTime.after(c1) && checkTime.before(c2)) {
57             return true;
58         }
59 
60         if (checkTime.after(c3) && checkTime.before(c4)) {
61             return true;
62         }
63 
64         return false;
65     }
66 }
67 
68 // 测试结果为:
69 // 检查发布时间是否在特定时段:否