java——date时间类型操作 野性酷女 2024-03-24 14:33 37阅读 0赞 **目录** 1.date类型使用 2.获取想要的自定义时间点 3.date类型与String类型转换 4.date时间先后比较 5.LocalDateTime的使用 -------------------- ### 1.date类型使用 ### 在java中,日期时间用java.util.Date类来表示,调用默认构造器Date(),将会创建一个当前系统时间的Date对象,时间精确到毫秒: Date date = new Date(); ### 2.获取想要的自定义时间点 ### Date类型初始化时可以传入参数获取对应的年月日(注:该方式已被弃用,所以不建议使用) 我们想要输出一个时间常用Calendar时间操作类,set对应的年月日时分秒: public static Date getStartOfDay(Date time) { Calendar calendar = Calendar.getInstance(); calendar.setTime(time); calendar.set(Calendar.HOUR_OF_DAY, 12); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } 上述代码可以获得当天的12点0分0秒。 我们还可以使用Calendar进行时间加减操作: public class test { public static void main(String[] args) throws ParseException { System.out.println(getStartOfDay(new Date())); } public static Date getStartOfDay(Date time) { Calendar calendar = Calendar.getInstance(); calendar.setTime(time); calendar.set(Calendar.HOUR_OF_DAY, 12); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); //加10分钟 calendar.add(Calendar.MINUTE, 10); //减30秒 calendar.add(Calendar.SECOND, -30); return calendar.getTime(); } } ![a0f3d36815f148f194334e7795885d70.png][] 还可以通过 *Calendar* 获得对应时间的小时、分钟等属性: public int getHour(){ //获取当前时间 Calendar instance = Calendar.getInstance(); //获取当前小时 return instance.get(Calendar.HOUR_OF_DAY); } ### 3.date类型与String类型转换 ### date类型可以使用SimpleDateFormat类型实现与String类型以定义好的日期格式互转: (1)String转date: SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date1 = sdf.parse("2023-03-30 12:00:00"); Date date2 = sdf.parse("2023-03-30 12:00:01"); (2)date转String: SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date = sdf.format(new Date()); **此处有一个细节,时间格式中 *yyyy-MM-dd HH:mm:ss* 代表24小时制;*yyyy-MM-dd hh:mm:ss* 代表12小时制。(小时H和h的区别)** ### 4.date时间先后比较 ### date类型比较时间先后一般可以用两种方式进行,对应两种格式: (2)date格式下使用before和after函数: SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date1 = sdf.parse("2023-03-30 12:00:00"); Date date2 = sdf.parse("2023-03-30 12:00:01"); System.out.println(date1.before(date2)); System.out.println(date1.after(date2)); ![cccda659e31043ea89004787dc5dd09a.png][] (2)String格式下使用CompareTo函数: public class test { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //系统当时时间 String date1 = sdf.format(new Date()); //系统当天12点 String date2 = sdf.format(getStartOfDay(new Date())); System.out.println("时间点1:"+date1); System.out.println("时间点2:"+date2); //比较时间先后 System.out.println(date1.compareTo(date2)); } //获取当天12点 public static Date getStartOfDay(Date time) { Calendar calendar = Calendar.getInstance(); calendar.setTime(time); calendar.set(Calendar.HOUR_OF_DAY, 12); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } } ![313ab23361e74dc3a92c6588dc81a897.png][] date1 时间点1晚于date2时间点2,所以输出的是大于0;小于0则是date1 时间点1早于date2时间点2;等于0则是两个时间点相同。 **此处注意比较的两个时间需都是24小时制,否则会出现24小时制的12点晚于12小时制下午4点的比较错误的情况。** ### **5.**LocalDateTime的使用 ### LocalDateTime 是java 8全新的日期框架,使用起来更加便捷。 public void setTime01(){ //获取当前时间 LocalDateTime now = LocalDateTime.now(); //格式化输出 System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); //指定时区:美国洛杉矶时间 LocalDateTime dateTime = LocalDateTime.now(ZoneId.of("America/Los_Angeles")); //格式化输出 System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); //指定时间 LocalDateTime before = LocalDateTime.of(2020,6,18,0,0); //格式化输出 System.out.println(before.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } 同时,LocalDateTime 也支持时间的加减: public void setTime02(){ LocalDateTime now = LocalDateTime.now(); //增加1天 LocalDateTime plus = now.plusDays(1); //减少1分钟 LocalDateTime decrease = now.plus(-1, ChronoUnit.MINUTES); //输出 System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); System.out.println(plus.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); System.out.println(decrease.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } 上述代码中可以直接调用对应的plusYears()、plusDays()等封装好的方法,也可以在plus()中指定单位进行加减。 [a0f3d36815f148f194334e7795885d70.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/24/2572982ad873464e9c475370149f7129.png [cccda659e31043ea89004787dc5dd09a.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/24/97a6034eea1e466896f4fbe4e6f4a23f.png [313ab23361e74dc3a92c6588dc81a897.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/24/1122c6a346b24f7fae094d89bd6c0242.png
还没有评论,来说两句吧...