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 // 检查发布时间是否在特定时段:否
标签:checkTime,set,java,String,灵活,00,日期,Date,Calendar From: https://www.cnblogs.com/hld123/p/17289728.html