1、Date类
大部分方法已被Canada替代,类型转换时会用到
Date date = new Date(); // 创建date对象 date /deɪt/ data /ˈdeɪtə/
// 日期时间比较
boolean after(Date date)
若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
如:boolean flag = date.before(new Date(2022,10,10));
boolean before(Date date)
若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
如:boolean flag = date.after(new Date(2022,10,10));
Object clone( )
返回此对象的副本。
int compareTo(Date date)
比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
如:int val = date.compareTo(new Date(2022,10,10));
int compareTo(Object obj)
若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
boolean equals(Object date)
当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
如:boolean flag1 = date.equals("Wed Oct 19 CST 2022");
注意:默认new Date() 是本地时间,包含年月日时分秒,必须全部相同才是true。
long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
如:long mills = date.getTime();
int hashCode( )
返回此对象的哈希码值。
void setTime(long time)
用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
如:date.setTime(284320913213L);
注意:参数是long类型需要加上L表示为long类型,无返回值,可通过SimpleDateFormat格式化为年月日。
String toString( )
把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy
// dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
如:String printDate = date.toString();
结果:Fri Jan 05 02:01:53 CST 1979
2、Canada类
最常用的日期类,包含很全的各类日历方法
Calendar c = Calendar.getInstance();
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND 秒
Calendar.DAY_OF_WEEK 星期几
void add(int field, int amount)
根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。
protected void computeFields()
转换UTC毫秒值为时间域值
protected void computeTime()
覆盖Calendar ,转换时间域值为UTC毫秒值
boolean equals(Object obj)
比较此 GregorianCalendar 与指定的 Object。
int get(int field)
获取指定字段的时间值
int getActualMaximum(int field)
返回当前日期,给定字段的最大值
int getActualMinimum(int field)
返回当前日期,给定字段的最小值
int getGreatestMinimum(int field)
返回此 GregorianCalendar 实例给定日历字段的最高的最小值。
Date getGregorianChange()
获得格里高利历的更改日期。
int getLeastMaximum(int field)
返回此 GregorianCalendar 实例给定日历字段的最低的最大值
int getMaximum(int field)
返回此 GregorianCalendar 实例的给定日历字段的最大值。
Date getTime()
获取日历当前时间。
long getTimeInMillis()
获取用长整型表示的日历的当前时间
TimeZone getTimeZone()
获取时区。
int getMinimum(int field)
返回给定字段的最小值。
int hashCode()
重写hashCode.
boolean isLeapYear(int year)
确定给定的年份是否为闰年。
void roll(int field, boolean up)
在给定的时间字段上添加或减去(上/下)单个时间单元
// field: 1=年,2=月,5=日,10=小时,12=分钟,13=秒,14=毫秒,15=时区
// up: true:增加 ,false:减去。
注意:该方法在月份/日期滚动中可能会存在问题,这个GregorianCalendar可解决。
// GregorianCalendar gregorianCalendar = new GregorianCalendar();
// gregorianCalendar.roll(1, 1);
void set(int field, int value)
用给定的值设置时间字段。
void set(int year, int month, int date)
设置年、月、日的值。
void set(int year, int month, int date, int hour, int minute)
设置年、月、日、小时、分钟的值。
void set(int year, int month, int date, int hour, int minute, int second)
设置年、月、日、小时、分钟、秒的值。
void setGregorianChange(Date date)
设置 GregorianCalendar 的更改日期。
void setTime(Date date)
用给定的日期设置Calendar的当前时间。
void setTimeInMillis(long millis)
用给定的long型毫秒数设置Calendar的当前时间。
void setTimeZone(TimeZone value)
用给定时区值设置当前时区。
String toString()
返回代表日历的字符串。
3、SimpleDateFormat(日期格式化)
// yyyy: 年 MM: 月份 dd: 日
// HH: 24小时制 hh: 12小时制 mm:分钟 ss: 秒 SS: 毫秒
// E: 星期几 D: 一年中多少天 w:一年中第几周 W:一个月中第几周
// F: 一个月中第几周的周几 a: A.M/P.M上午/下午 k: 一天中的小时
// K: A.M/P.M(0-11)格式小时 z: 时区 ‘: 文字定界符 “:单引号
SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateFormat = simpleDateFormat.format(date);
// 注意:yyyy-MM-dd 中-可以是中文年月日,或/等都可以。
4、printf(日期格式化)
// 使用两个字母格式,以%t开头并且以下面表格中的一个字母结尾
// c:包括全部日期和时间信息
System.out.printf("%tc",date);
// F:年-月-日 格式
System.out.printf("%tF",date);
// D:月/日/年 格式
System.out.printf("%tD",date);
// r:HH:MM:SS PM 格式(12时制)
System.out.printf("%tr",date);
// R:HH:MM 格式(24小时制)
System.out.printf("%tR",date);
// T:HH:MM:SS 格式(24小时制)
System.out.printf("%tT",date);
// b 或 B :月份
System.out.printf("月份:%tb",date);
System.out.printf("月份:%tB",date);
// a 或 A :星期
System.out.printf("星期:%ta",date);
System.out.printf("星期:%tA",date);
//C的使用,年前两位
System.out.printf("年的前两位数字(不足两位前面补0):%tC",date);
//y的使用,年后两位
System.out.printf("年的后两位数字(不足两位前面补0):%ty",date);
//j的使用,一年的天数
System.out.printf("一年中的天数(即年的第几天):%tj",date);
//m的使用,月份
System.out.printf("两位数字的月份(不足两位前面补0):%tm%n",date);
//d的使用,日(二位,不够补零)
System.out.printf("两位数字的日(不足两位前面补0):%td%n",date);
//e的使用,日(一位不补零)
System.out.printf("月份的日(前面不补0):%te",date);
5、String.format()(日期格式化)
// Locale.CHINESE 中文 Locale.US 英文
// 以下全称及简称指的是英文形式
// c:包括全部日期和时间信息
String str=String.format(Locale.CHINESE,"中文:%tc",date);
// F:年-月-日 格式
String str=String.format(Locale.CHINESE,"中文:%tF",date);
// D:月/日/年 格式
String str=String.format(Locale.CHINESE,"中文:%tD",date);
// r:HH:MM:SS PM 格式(12时制)
String str=String.format(Locale.CHINESE,"中文:%tr",date);
// R:HH:MM 格式(24小时制)
String str=String.format(Locale.CHINESE,"中文:%tR",date);
// T:HH:MM:SS 格式(24小时制)
String str=String.format(Locale.CHINESE,"中文:%tT",date);
//b的使用,月份简称
String str=String.format(Locale.CHINESE,"中文:%tb",date);
//B的使用,月份全称
String str=String.format(Locale.CHINESE,"中文:%tB",date);
//a的使用,星期简称
String str=String.format(Locale.CHINESE,"中文:%ta",date);
//A的使用,星期全称
String str=String.format(Locale.CHINESE,"中文:%tA",date);
//C的使用,年前两位
String str=String.format(Locale.CHINESE,"中文:%tC",date);
//y的使用,年后两位
String str=String.format(Locale.CHINESE,"中文:%ty",date);
//j的使用,一年的天数
String str=String.format(Locale.CHINESE,"中文:%tj",date);
//m的使用,月份
String str=String.format(Locale.CHINESE,"中文:%tm",date);
//d的使用,日(二位,不够补零)
String str=String.format(Locale.CHINESE,"中文:%td",date);
//e的使用,日(一位不补零)
String str=String.format(Locale.CHINESE,"中文:%te",date);