Date和Calendar

Date和Calendar

Calendar比Date拥有更加高级的操作, 底层源码比Date更加复杂

Date (类)

Date

java.uril.Date java提供的日期的工具类, 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理

构造方法

常用无参构造进行创建对象 , 例如: Date date = new Date();

常见方法

对于日期的年月日, 时分秒 进行操作, 其中 带删除线的是已过时

返回值 方法 说明
int getYear() 获取从1900到现在多少年了
int getDate() 获取今天是一个月中的第几天
int getDay() 获取今天是一周中的第几天
int getHours() 获取现在几点了(小时)
int getMinutes() 获取现在是多少分
int getMonth() 获取现在是当前月份-1(源码中月份是从0~11)
int getSeconds() 获现在取多少秒
int getTime() 获取1970年1月1日0点到现在的毫秒值
String toLocaleString() 输出例如: 2020-5-16 11:50:18格式的日期时间

Calendar类 (抽象类)

Calendar

java.util.Calendar Calendar(日历类) 是一个抽象类, 从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些.

Calendar对象创建方式

Calendar cal = Calendar.getInstance();

输出cal会得到, 里面包含了好多信息, 比如年月日,时区等

java.util.GregorianCalendar[time=1589690832737,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=4,WEEK_OF_YEAR=21,WEEK_OF_MONTH=4,DAY_OF_MONTH=17,DAY_OF_YEAR=138,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=47,SECOND=12,MILLISECOND=737,ZONE_OFFSET=28800000,DST_OFFSET=0]

常用方法

返回值 方法 说明
int get(int fieId) 参数fieId是Calendar里的静态属性,见fieId 常用的静态属性,
可以获取年, 月, 日等信息
Date getTime() 可以把Calendar转为Date对象
void set(int field, int value) 设置年月日, 时分秒等值
void setTime(Date date) 把一个Date对象转为Calendar,

fieId 常用的静态属性

这些 属性都是静态属性,

属性 说明
YEAR 年, (四位数)
MONTH 月,(0~11), 实际获取的是当前月份-1
DAY_OF_MONTH ,当月的第几天(几号)
DAY_OF_WEEK , 当前周的第几天 (周日为1, 周一为2, 依此类推, 最大为7)
HOUR_OF_DAY , 一天中的第几个小时(最大24)
MINUTE
SECOND
MILLISECOND 毫秒
12个月单词全大写 分别代表12个月份 (0~11)

用法实例:

main方法中代码如下:

Calendar cal = Calendar.getInstance(); // 获取Calendar对象
System.out.println(cal.get(Calendar.YEAR));// 年
System.out.println(cal.get(Calendar.MONTH));// 月(当前月份-1)
System.out.println(cal.get(Calendar.DAY_OF_MONTH));// 日
System.out.println(cal.get(Calendar.DAY_OF_WEEK)); // 周
System.out.println(cal.get(Calendar.HOUR_OF_DAY)); // 时
System.out.println(cal.get(Calendar.MINUTE)); // 分
System.out.println(cal.get(Calendar.SECOND)); // 秒
System.out.println(cal.get(Calendar.MILLISECOND)); // 毫秒

cal.set(Calendar.YEAR, 2018);// 设置年
cal.set(Calendar.MONTH, Calendar.FEBRUARY); // 设置月
cal.set(Calendar.DAY_OF_MONTH, 15); // 设置日
cal.set(Calendar.HOUR_OF_DAY, 23); // 设置小时
cal.set(Calendar.MINUTE, 59); // 设置分
cal.set(Calendar.SECOND, 59); // 设置秒
System.out.println(cal.getTime()); // 转为Date类型显示

扩展: LocalDateTime

LocalDateTime是JDK8的新的API, 对比Calendar来说, 线程更安全. 详细使用可参考开发文档API

posted @ 2020-05-16 13:09  zpk-aaron  阅读(154)  评论(0编辑  收藏  举报