Date:
Date类负责时间的表示,在计算机中,时间的表示是一个较大的概念,现有的系统基本都是利用从1970.1.1 00:00:00 到当前时间的毫秒数进行计时,这个时间称为epoch。在后文中如果没有明确说明,毫秒数就是指从1970年到对应时间的毫秒数。在Java 的Date类内部其实也是一个毫秒数,对外表现为一个Date对象。
常用的构造方法:
Date( )
Date(long date)
常用的方法:
boolean after(Date date) | 如果调用Date对象包含或晚于指定的日期则返回true,否则,返回false。 |
boolean before(Date date) | 如果调用Date对象包含或早于日期指定的日期返回true,否则,返回false。 |
int compareTo(Date date) | 比较日期的调用对象的值。如果这两个值相等返回0。如果调用对象是早于日期返回一个负值。如果调用对象最迟日期返回正值。 |
int compareTo(Object obj) | 操作以相同的compareTo(Date) 如果obj是一个类日期。否则,它会抛出一个ClassCastException。 |
long getTime( ) | 返回自1970年1月1日起已经过的毫秒数。 |
void setTime(long time) | 设置所指定的时间,这表示经过时间以毫秒为单位,1970年1月1日从午夜的时间和日期 |
Calendar:
Calendar本身是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例,它实际运行时使用的是java.util.GregorianCalendar。它通过setTime()设定一个Calendar内部的毫秒数,之后就可以对这个毫秒数进行分析,进而得到它的年月日信息。同时,我们也可以对Calendar直接设定年月日属性,从而获取对应的Date对象。
这里是由GregorianCalendar类提供一些有用的支持方法的列表:
void add(int field, int amount) | 添加指定(有符号的)时间量,以给定的时间字段,基于日历的规则。 |
protected void computeFields() | 将UTC转换为毫秒时间字段值. |
protected void computeTime() | 覆盖日历转换时间域值为UTC的毫秒. |
int get(int field) | 获取给定时间域的值. |
int getActualMaximum(int field) | 返回该字段可能的最大值,考虑到当前的日期. |
int getActualMinimum(int field) | 返回该字段可以具有的最低值,给定当前的日期. |
int getGreatestMinimum(int field) | 对于给定的字段中返回高最低值(如果有变化). |
Date getGregorianChange() | 获取公历更改日期. |
int getLeastMaximum(int field) | 对于给定的字段返回最低的最大值(如果有变化). |
int getMaximum(int field) | 返回给定字段中的最大值. |
Date getTime() | 获取日历的当前时间. |
long getTimeInMillis() | 获取日历的当前时间长. |
TimeZone getTimeZone() | 获取时区. |
int getMinimum(int field) | 返回给定字段中的最小值. |
boolean isLeapYear(int year) | 确定给定年份是闰年. |
void roll(int field, boolean up) | 加上或减去(上/下)的时间在给定的时间字段一个单元,不更改更大的字段. |
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) | 设置日历的当前时间与给定日期. |
void setTimeInMillis(long millis) | 从给定long值设置日历的当前时间. |
void setTimeZone(TimeZone value) | 将时区设置与给定的时区值. |
String toString() | 返回此日历的字符串表示形式. |
SimpleDateFormat:
一、构造方法:
SimpleDateFormat()//构造一个 SimpleDateFormat使用默认模式和日期格式符号为默认的 FORMAT区域设置。
SimpleDateFormat(String pattern) //例:SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
G 纪年 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
二、常用的两个方法:
Date parse(String source);//例:Date date = sdf.parse("2018-08-30");无法解析时报java.text.ParseException异常。
String format(Date date);//String dateStr=sdf.format(new Date());