java 常用类库:时间类LocalDate;LocalTime;LocalDateTime;Calendar 类;Date ;
LocalDate类
LocalTime类
LocalDateTime类
代码示例:
package com.zmd.common_class_libraries; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; /** * @ClassName LocalDateTime * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/4/7. */ public class LocalDateTimeExample { public static void main(String[] args) { //当前日期 LocalDate localDate = LocalDate.now(); System.out.println(localDate); //2021-04-07 //指定日期:某年的第多少天 LocalDate localDate1 = LocalDate.ofYearDay(2021,365); System.out.println(localDate1);//2021-12-31 //获取指定年月日时间 LocalDate localDate2 = LocalDate.of(2021,5,1); System.out.println(localDate2); //2021-05-01 //当前时间 LocalTime localTime = LocalTime.now(); System.out.println(localTime); //指定时间 localTime = LocalTime.of(22,0,0,0); System.out.println(localTime); //一天中的第多少秒 localTime = LocalTime.ofSecondOfDay(86399); System.out.println(localTime); //23:59:59 //日期时间LocalDateTime类: LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDateTime); //2021-04-07T22:22:16.560556800 //时间加减,不改变对象自身,需要获取返回值 LocalDateTime localDateTime1 = localDateTime.plusHours(5).plusMinutes(3); System.out.println(localDateTime1); //2021-04-08T03:25:16.560556800 } }
Calendar 类
实例创建方法Calendar.getInstance();
实例方法
getTime() 获取时间戳;
add()时间计算;
roll()时间计算超出范围走默认值;
getActualMaximum; getActualMinimum获取最大最小值
package com.zmd.common_class_libraries; import com.sun.jdi.PathSearchingVirtualMachine; import java.util.Calendar; /** * @ClassName CalendarExample * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/4/7. */ public class CalendarExample { public static void main(String[] args) { //Calendar 类为抽象类,不可以new 需要使用静态方法getInstance返回实例 Calendar calendar = Calendar.getInstance(); //获取当前日期 System.out.println(calendar.getTime()); //日期计算,改变对象本身 calendar.add(Calendar.DATE, -1); System.out.println(calendar.getTime()); //获取时间对应的年、月、本月第几天、是当天第几个小时 System.out.println(calendar.get(Calendar.YEAR)); System.out.println(calendar.get(Calendar.MONTH)); System.out.println(calendar.get(Calendar.DATE)); System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); //获取指定字段的最大值最小值:月份0~11 System.out.println(calendar.getActualMaximum(Calendar.MONTH)); System.out.println(calendar.getActualMinimum(Calendar.MONTH)); //日期计算roll和add一样,但是超出当天或者当年月时间不会向上进位 calendar.add(Calendar.DAY_OF_MONTH,26); System.out.println(calendar.getTime()); } }
set
设置对应年月字段
// set设置月份默认超出对应合理范围会自动进位 calendar.set(Calendar.MONTH,20); //设置20月,会自动进位到次年 System.out.println(calendar.getTime()); //Tue Sep 06 18:19:24 CST 2022
关闭容错
//配置不允许自动容错 calendar.setLenient(false); calendar.set(Calendar.MONTH,20); //关闭进位,再设置20月,抛出异常 //Exception in thread "main" java.lang.IllegalArgumentException: MONTH System.out.println(calendar.getTime());
Calendar set方法的延迟修改策略
当执行set()方法设置时间对象更改某个字段后,并没有马上对原有实例修改,而是在下一次调用get、getTime、或者getTimeMillis方法的时候才做update更新修改后的时间。
然后,我们再调用,get, getTime或者getTimeInMillis方法的时候,判断如果isTimeSet为false,会重新计算时间。

这样做的好处是什么?比如,我们set了100次,之后,我们突然get了一次,这个时候,我们就仅仅在get的时候才计算了一下时间(1次)。如果不这样做,每次set的时候,就应该计算时间(100次),这样就节约了我们的资源
---------------------------------------------------------------
Date类 已过时
构造时间对象
当前时间Date()
指定时间Date(毫秒时间戳)
方法:
getTime() 时间对象的时间戳,默认传入的是System.currentTimeMillis()
setTime(long time) 设置时间对象的时间戳
before/after 判断传入的时间是否在本时间实例的前或后。
package com.zmd.common_class_libraries; import java.util.Date; /** * @ClassName DateTimeExample * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/4/7. */ public class DateTimeExample { public static void main(String[] args) { //当前时间戳毫秒数 System.out.println(System.currentTimeMillis()); //Date()获取当前时间 Date nowDate = new Date(); System.out.println(nowDate); //判断时间对象是否在指定时间之后 Date when = new Date(System.currentTimeMillis() - 7200 * 1000); System.out.println(when); System.out.println(nowDate.after(when));; //判断时间对象是否在指定时间之前 System.out.println(nowDate.before(when));; //通过时间对象获取时间对象的时间戳 System.out.println(nowDate.getTime()); //对比测试 System.out.println(System.currentTimeMillis()); //设置时间戳,比如设置24小时之后的 nowDate.setTime(System.currentTimeMillis() + 24 * 3600 * 1000); System.out.println(nowDate); } }
posted on 2021-04-07 19:48 zhangmingda 阅读(413) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具