Date 日期类
Date 类可以获取日期数据的瞬时值,精确到毫秒。
构造对象
Date 类提供了两个构造函数来实例化对象:
- Date date= new Date();
使用当前日期和时间来初始化对象; - Date(Long time);
参数time表示自1970年1月1日起计算的毫秒数,用来来初始化对象; - 示例:
输出:Date date = new Date(); System.out.println(date); // 根据系统时间获取自1970年1月1日以来的毫秒数 long longTime = System.currentTimeMillis(); System.out.println(longTime); // 有参构造 Date date1 = new Date(longTime); System.out.println(date1);
无参构造获取日期时间:Sat Oct 15 18:45:14 CST 2022 毫秒数:1665830714104 有参构造获取日期时间:Sat Oct 15 18:45:14 CST 2022
Date 中时间毫秒数和日期相互转换:
- 示例:
输出:// 有参构造,毫秒转日期 Date date = new Date(1665830714104L); System.out.println("毫秒转日期:"+date); // 日期转毫秒数 long time = date.getTime(); System.out.println("日期转毫秒:"+time);
毫秒转日期:Sat Oct 15 18:45:14 CST 2022 日期转毫秒:1665830714104
从日期信息中获取对应时间信息(过时)
在Date类中,通过get方法获取时间相关的信息,但是要注意的是,自JDK1.1版本后,很多get方法已经过时。因为年份从1900年开始算起,获取年份时需要加上1900才是当前年份;月份从0开始算起,获取月份信息时需要加1;Date的星期日到星期六以数字0-6来表示。
-
示例:
// 无参构造 Date date = new Date(); System.out.println("日期:"+date); int year = date.getYear()+1900; System.out.println("年份:"+year); int month = date.getMonth()+1; System.out.println("年份:"+month); int day = date.getDate(); System.out.println("几日:"+day); int hour = date.getHours(); System.out.println("小时:"+hour); int minute = date.getMinutes(); System.out.println("分钟:"+minute); int second = date.getSeconds(); System.out.println("分钟:"+second); int week = date.getDay(); System.out.println("星期:"+week);
输出:
日期:Sat Oct 15 18:58:01 CST 2022 年份:2022 年份:10 几日:15 时:18 分:58 秒:1 星期:6
Calendar 日历类
Calendar 类是一个抽象类,提供了关于日期计算的相关功能,比如:设置和获取日期数据的特定部分;年、月、日、时、分、秒的展示和计算。 Calendar 的一个具体子类 GregorianCalendar 类,用来表示大家熟悉的日历表示法的,提供了世界上大多数国家/地区使用的标准日历系统。
获取对象
通过 Calendar.getInstance() 获取到 Calendar 对象。
-
示例:
// 根据系统当前日期创建的Calendar对象: Calendar calendar = Calendar.getInstance(); System.out.println(calendar);
输出:
java.util.GregorianCalendar[time=1665832875835,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=288,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=21,SECOND=15,MILLISECOND=835,ZONE_OFFSET=28800000,DST_OFFSET=0]
由输出结果不能直观的看出时间,我们更多地是用来对时间进行处理,获取具体信息。
获取日期特定部分
注意月份是从0开始,一月是0,二月是1,以此类推,12月是11。 周日到周六分别用1~7表示,周日是1,周一是2…周六是7。
-
示例:
Date date = new Date(); System.out.println("Date日期:"+date); Calendar calendar = Calendar.getInstance(); System.out.println("Calendar日历:"+calendar); int year = calendar.get(Calendar.YEAR); System.out.println("年份:" + year); int month = calendar.get(Calendar.MONTH) + 1; System.out.println("月份:" + month); int day = calendar.get(Calendar.DATE); System.out.println("几日:" + day); int hour = calendar.get(Calendar.HOUR_OF_DAY); System.out.println("时:" + hour); int minute = calendar.get(Calendar.MINUTE); System.out.println("分:" + minute); int second = calendar.get(Calendar.SECOND); System.out.println("秒:" + second); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推) int week = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("星期:" + week); // 今年的第几天天 int day1 = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("今年第"+day1+"天"); // 今年的第几周 int week1 = calendar.get(Calendar.WEEK_OF_YEAR); System.out.println("今年第"+week1+"周");
输出:
Date日期:Sat Oct 15 19:41:36 CST 2022 Calendar日历:java.util.GregorianCalendar[time=1665834096246,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=288,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=41,SECOND=36,MILLISECOND=246,ZONE_OFFSET=28800000,DST_OFFSET=0] 年份:2022 月份:10 几日:15 时:19 分:41 秒:36 星期:7 今年第288天 今年第42周
对日期信息进行设置和计算
-
示例:
Date date = new Date(); System.out.println("Date日期:"+date); Calendar calendar = Calendar.getInstance(); System.out.println("Calendar日历:"+calendar); // 设置当前月份 calendar.set(Calendar.MONTH,4); System.out.println("设置分月份:"+(calendar.get(Calendar.MONTH)+1)); // 计算月份 calendar.add(Calendar.MONTH, 5); System.out.println("计算的月份:"+(calendar.get(Calendar.MONTH)+1));
输出:
Date日期:Sat Oct 15 19:48:41 CST 2022 Calendar日历:java.util.GregorianCalendar[time=1665834521828,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=288,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=48,SECOND=41,MILLISECOND=828,ZONE_OFFSET=28800000,DST_OFFSET=0] 设置分月份:5 计算的月份:10