日期类

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);
原文地址:https://www.cnblogs.com/zongmin/p/11342812.html