日期类
Date类
Date 类是 java.util.Date
类,不是 java.sql.Date
。
构造方法
//使用当前日期和时间来初始化对象
Date();
//接收一个参数,该参数是从1970年1月1日起的毫秒数
Date(long millisec);
返回毫秒数 getTime
//返回自 1970年1月1日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
long getTime();
//下面两种返回的都是当前时间的毫秒数
new Date().getTime();
System.currentTimeMillis();
设置毫秒数 setTime
//用自 1970年1月1日 00:00:00 GMT 以后 time 毫秒数设置时间和日期
void setTime(long time)
判断时间先后 after
//若当调用此方法的 Date 对象在指定日期之后返回 true,否则返回 false。
boolean after(Date date);
判断时间先后 before
//若当调用此方法的 Date 对象在指定日期之前返回 true,否则返回 false。
boolean before(Date date);
转换字符串 toString
//把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy
//其中:dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
String toString()
SimpleDateFormat类
日期转字符串 format
y 年
M 月
d 日
H 24进制的小时
h 12进制的小时
m 分钟
s 秒
S 毫秒
E 星期几
D 一年的第几天
w 一年中第几周
W 一个月中第几周
a AM还是PM
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
//当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: 2019-06-09 23:06:20 164
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy/MM/dd");
Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("当前时间通过 yyyy/MM/dd 格式化后的输出: "+str1);
//当前时间通过 yyyy/MM/dd 格式化后的输出: 2019/06/09
字符串转日期 parse
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
String str = "2019/12/5 12:12:12";
try {
Date d = sdf.parse(str);
System.out.printf("字符串 %s 通过格式 yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
} catch (ParseException e) {
e.printStackTrace();
}
//字符串 2019/12/5 12:12:12 通过格式 yyyy/MM/dd HH:mm:ss
//转换为日期对象: Thu Dec 05 12:12:12 CST 2019
字符串模式 (yyyy/MM/dd HH:mm:ss)
需要和字符串格式保持一致
Calendar类
Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,使用 getInstance() 方法创建即可。
获取 Calendar 对象
//默认是当前日期
Calendar c = Calendar.getInstance();
//创建一个代表2019年5月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2019, 5 - 1, 12); //月份从0开始计
filed 字段类型
Calendar.YEAR 年份
Calendar.MONTH 月份,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 与 Date 转换
//用给定的Date设置Calendar的当前时间
void setTime(Date date);
//获取日历当前时间
Date getTime();
//Calendar转Date
Calendar c = Calendar.getInstance();
Date d = c.getTime();
//Date转Calendar
Date d1 = new Date(0);
//日期调成: 1970.1.1 08:00:00
c.setTime(d1);
设置字段 set
//只设定某个字段,例如日期的值, 例 c1.set(Calendar.DATE,10)
void set(int field,int value);
//设置年月日
void set(int year,int month,int date);
//设置年月日时分秒
void set(int year,int month,int date,int hourOfDay,int minute,int second);
添加或减去时间 add
void add(int field, int amount);
Calendar c1 = Calendar.getInstance();
//当前日期加10天
c1.add(Calendar.DATE, 10);
//当前日期减10天
c1.add(Calendar.DATE, -10);
添加或减去时间 roll
void roll(int field, int amount);
roll 方法和 add 类似,区别在于加上 amount 后超过该字段最大值后,不会向上一个字段进位。
Calendar ca1 = Calendar.getInstance();
ca1.set(2003, 7, 23, 0, 0, 0); // 2003-8-23
ca1.add(Calendar.MONTH, 6); //2004-2-23
Calendar ca2 = Calendar.getInstance();
ca2.set(2003, 7, 23, 0, 0, 0); // 2003-8-23
ca2.add(Calendar.MONTH, 6); //2003-2-23
获取 filed 字段值 get
void get(int filed);
//获取当前时间月份
Calendar c1 = Calendar.getInstance();
int month = c1.get(Calendar.MONTH) + 1;
获取 filed 最大值 getActualMaximum
//返回当前日期,给定字段的最大值,例如月份返回 11
int getActualMaximum(int field);
获取 filed 最小值getActualMaximun
//返回当前日期,给定字段的最小值, 例如月份返回 0
int getActualMinimum(int field);