Date类
- 什么是Date类:java.util.Date类,在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。
- 构造方法
-
Date():使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象。
Date d = new Date(); System.out.println(d); //执行结果 Mon Nov 04 11:21:43 CST 2019 结论:在该格式中,Mon代表Monday(周一),Nov代表November(十一月),04代表4号,CST代表China Standard Time(中国标准时间,也就是北京时间(东八区))。
-
Date(int year, int month, int date):Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。 - - ->已过时
Date d = new Date(2019 - 1900,11 - 1,4); System.out.println(d); //执行结果 Mon Nov 04 00:00:00 CST 2019 **注意:Date类中,年份减去1900,月份为0-11,所以输入的实际月份要减去1。**
-
Date(long date):传递一个毫秒数,获取这个毫秒数所对应的当前时间。
- 常用方法
-
getYear():年份,得到的年份是減去了1900的,所以最后的结果必须加上1900。- - ->已过时
-
getMonth():月份,Java中月份是0-11,所以得到的月份必须加上1才等于实际月份。 - - ->已过时
-
getDate():日期 - - ->已过时
-
getHours():小时 - - ->已过时
-
getMinutes():分钟 - - ->已过时
-
getSeconds():秒 - - ->已过时
-
getDay():星期,0 = Sunday(日), 1 = Monday(一), 2 = Tuesday(二), 3 = Wednesday(三), 4 = Thursday(四), 5 = Friday(五), 6 = Saturday(六)。 - - ->已过时
-
getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 到目前的毫秒数。
Calendar类
-
什么是Calendar类:java.util.Calendar类,从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。
-
常用字段(一般用作方法中field参数)
-
Calendar.YEAR——年份
-
Calendar.MONTH——月份。与Date类相同,为0-11。
-
Calendar.DATE——日期
-
Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同
-
Calendar.HOUR——12小时制的小时数
-
Calendar.HOUR_OF_DAY——24小时制的小时数
-
Calendar.MINUTE——分钟
-
Calendar.SECOND——秒
-
Calendar.DAY_OF_WEEK——星期几。在Calendar类中,星期是1-7,周日是1,周一是2,周二是3,依次类推。
- 常用方法
-
getInstance():由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。使用该方法获得的Calendar对象就代表当前的系统时间,由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。
-
public final void set(int year,int month,int date):设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。其参数的结构和Date类不一样。Calendar类中年份的数值直接书写,月份的值为实际的月份值减1,日期的值就是实际的日期值。
-
set(int year, int month, int date, int hourOfDay, int minute):设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
-
set(int year, int month, int date, int hourOfDay, int minute, int second):设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
-
set(int field, int value):将给定的日历字段设置为给定值。
-
public int get(int field):返回给定日历字段的值。其中参数field代表需要获得的字段的值,字段说明和上面的set方法保持一致。
//举例:设置时间与获得Calendar类中的信息 Calendar c2 = Calendar.getInstance(); //设置时间方法1:直接调用上述2、3、4中方法填写。 //方法2:调用5中的set(int field, int value)方法 c2.set(Calendar.YEAR, 1996); c2.set(Calendar.MONTH, 10-1); c2.set(Calendar.DAY_OF_MONTH, 28); c2.set(Calendar.HOUR, 1); c2.set(Calendar.MINUTE, 2); c2.set(Calendar.SECOND, 50); //获取信息 //年份 int year = c2.get(Calendar.YEAR); //月份 int month = c2.get(Calendar.MONTH) + 1; //日期 int date = c2.get(Calendar.DATE); //小时 int hour = c2.get(Calendar.HOUR_OF_DAY); //分钟 int minute = c2.get(Calendar.MINUTE); //秒 int second = c2.get(Calendar.SECOND); //星期几,1-7,星期要减去一,变成0-6 int day = c2.get(Calendar.DAY_OF_WEEK) - 1; System.out.println("年份:" + year); System.out.println("月份:" + month); System.out.println("日期:" + date); System.out.println("小时:" + hour); System.out.println("分钟:" + minute); System.out.println("秒:" + second); System.out.println("星期:" + day); //执行结果 年份:1996 月份:10 日期:28 小时:1 分钟:2 秒:50 星期:2
-
public abstract void add(int field,int amount):该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少时amount的值为负。
Calendar c3 = Calendar.getInstance(); c3.add(Calendar.DATE, 10); int year1 = c3.get(Calendar.YEAR); //月份 int month1 = c3.get(Calendar.MONTH) + 1; //日期 int date1 = c3.get(Calendar.DATE); System.out.println(year1 + "年" + month1 + "月" + date1 + "日"); //执行结果 2019年11月14日 结果解释:这里add方法是指在c3对象的Calendar.DATE,也就是日期字段上增加10,类内部会重新计算该日期对象中其它各字段的值,从而获得10天以后的日期
-
public boolean after(Object when):该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。
Calendar c4 = Calendar.getInstance(); c4.set(2019, 10 - 1, 10); Calendar c5 = Calendar.getInstance(); c5.set(2020, 10 - 1, 10); boolean b = c5.after(c4); System.out.println(b); //执行结果 true 结果解释:在该示例代码中对象c4代表的时间是2019年10月10号,对象c5代表的时间是2020年10月10号,则对象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true。
-
public boolean before(Object when):该方法是判断当前日期对象是否位于另外一个日期对象之前。
-
public final Date getTime():该方法的作用是将Calendar类型的对象转换为对应的Date类对象,两者代表相同的时间点。
-
public final void setTime(Date date):该方法的作用是将Date对象转换为对应的Calendar对象
时间格式化类
-
什么是时间格式化类:SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
例如: new SimpleDateFormat("yyyy年MM月dd日").format(Calendar.getInstance().getTime())