Date类
表示特定的瞬间,精确到毫秒
月份的计算是从0开始
构造方法
import java.util.Date;//注意包不要导入错误
Date()
Date d = new Date();
System.out.println(d);// 打印的是日期的格式 Sun Jul 14 10:17:19 CST 2019
Date(long date)
分配并初始化此对象,以表示从标准时间(计算机元年)以来的指定毫秒数
给计算机元年加上相应的毫秒数 会计算时区
Date d = new Date(1000*60*60*24);
System.out.println(d);//Fir Jan 02 08:00:00 CST 1970 1970-01-02 早上8点整
//getTime() 获取当前系统的毫秒值
Date d = new Date();
long t = d.getTime();
还有一个方法也是同样的作用
long t2 = System.currentTimeMillis();
//setTime() 给计算机元年增加相应的时间量
Date d1 = new Date();
long t1 = d1.setTime(1000*60*60);
long<==>Date
long==>Date
long t = 1000*60*60;
1.Date d = new Date(t);
2.new Date().setTime(t);
long<==Date
Date d = new Date(t);
long t = d.getTime();
SimpleDateFormat
SimpleDateFormat:格式化日期,使日期的格式符合我们的需要
//空参 采用默认格式格式化日期
SimpleDateFormat s = new SimpleDateFormat();
String df = s.format(date);
System.out.println(df);//默认格式 19-7-14 上午10:33
//可以指定格式来格式化日期 参数就是指定的日期格式
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String df = s.format(date);
System.out.println(df);//指定格式 2019-07-14 10:35:40
拼接符"-"可以换成自己需要的如"年""月""日"等
格式的具体信息可查看SimpleDateFormat的API
字母 | 日期或时间元素 |
---|---|
G | Era标识符 |
y | 年 |
M | 年中的月份(从0开始算) |
w | 年中的周数 |
W | 月中的周数 |
D | 年中的天数 |
d | 月中的天数 |
F | 月中的星期 |
E | 星期中的天数 |
a | Am/Pm标记 |
H | 一天中的小时数(0-23) |
k | 一天中的小时数(1-24) |
K | am/pm中的小时数(0-11) |
h | am/pm中的小时数(1-12) |
m | 小时中的分钟数 |
s | 分钟中的秒数 |
S | 毫秒数 |
z | 时区 |
Z | 时区 |
//日期字符串 转 Date
String ds = "2019-07-14 12:12:12";
SimpleDateFormat s = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
Date date = s.parse(ds);//注 parse会有异常,直接alt+回车纠错就行
//ParseException 注意解析日期时格式要和日期字符串的格式对应,否则会包解析异常
//Date 转 日期字符串 format()
Calendar
Calendar 是对Date类的一个替代
是一个抽象类,不能直接new创建对象,需要通过静态方法getInstance()来获得此类的一个通用对象,这个方法会返回一个Calendar对象,其日期字段已由当前日期和时间初始化
Calendar c = Calendar.getInstance();
System.out.println(c);//打印了很多相关的值
int i = c.get(Calendar.YEAR);//获取当前年份,返回int
int i = c.get(Calendar.MONTH);
int i = c.get(Calendar.DAY_OF_MONTH);
int i = c.get(Calendar.HOUR_OF_DAY;
int i = c.get(Calendar.MINUTE);
int i = c.get(Calendar.SECOND);
//add方法 给相应日历字段加上或减去(填负数)相应的时间量
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR,1);//给当前年份+1
int i = c.get(Calendar.YEAR);//2020
//set 直接设置日期
Calendar c = Calendar.getInstance();
c.set(2000,6,19,14,20,20);
int i = c.get(Calendar.YEAR);//2000 取的是设置的年份