日期类
日期时间因为其时刻唯一性,经常被用作唯一标识。在java中存储的时间是一个长整型的数字。0代表的是1970年1月1日0时0分0秒。因为我们位于东八区,所以我们的时刻要加上8个小时,0代表的是1970年一月一日8时0分0秒。往前时负数,往后是整数。以毫秒计。
日期常用类
1、System(系统类)
2、Date(日期类)
3、SimpleDateFormat(日期格式类)
1、System类
- public static native long currentTimeMillis();
系统类中,有个currentTimeMillis()方法,用来返回当前时间。返回long类型。可以用来做为程序
效率的计算。
2、Date类
构造器
- Date();
无参构造器,创建代表当前时间的日期类。
- Date(long time)
传入一个long类型的整数,作为指定的时间,按自己所处时区0时刻开始算,到传入的整数的距离。
作为时间对象。
Date dt2 = new Date(0l);
System.out.println(dt2); //Thu Jan 01 08:00:00 CST 1970
常用方法
- public long getTime()
返回对象的时间。是一个长整型的数字。
- public void setTime(long time)
设置(修改)时间
3、SimpleDateFormat类
构造器
SimpleDateFormat()
不传值代表默认,格式为 yy-MM-dd hh:mm:ss 12小时制。
传字符串代表格式化的格式。如“yyyy-MM-dd HH:mm:ss”。在格式化中分隔符除了英文字母外的其他字符
y代表年,M代表月,d代表日,H代表小时,m代表分,s代表秒。如果使用了其他字母,会报
java.lang.IllegalArgumentException异常
Date dt2 = new Date(0l);
SimpleDateFormat sd = new SimpleDateFormat();
System.out.println(sd.format(dt2));//70-1-1 上午8:00
常用的模板
使用方式
- 字符串转日期
先构造格式化对象,SimpleDateFormat,然后使用其parse方法。传入和模板类似的时间格式
public Date parse(String source)
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dt = sd.parse("2017-12-2 8:8:8"); //获取到时间对象
- 日期转字符串
同样先传入格式化的模板,然后使用format方法,传入日期类。
public final String format(Date date) 返回格式化后的字符串。美观易懂
Date dt2 = new Date(0l);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sd.format(dt2);
JDK8中为了方便我们使用还加了特殊的日期类。
这里简单做介绍
- Year 类中 now() 方法用来获取当前年份
- Month类中 定义了月份的枚举 如Month.JANUARY -一月
- LocalDate类
now():返回不包含时分秒的本地时区的当前时间
of(年,月,日,时,分,秒);构建本时区的时间。
format();格式化时间成字符串 。需要传入一个日期格式转换器。DateTimeFormatter
parse();转换为时间。 传入需要转的字符和一个日期格式化转换器。DateTimeFormatter
- DateTimeFormatter类
ofPattern(模板); 传入时间格式化的模板。如yyyy-MM-dd HH:mm:ss,一般和LocalDate一起使用。
例如
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dtStr= "2020-02-25 11:23:04";
LocalDate dt = LocalDate.parse(dtStr,df);
- Period类
between();用来计算两个日期之间的间隔
LocalDate ld1 = LocalDate.of(2017, 7, 15);
LocalDate ld2 = LocalDate.of(2015, 6, 13);
System.out.println(Period.between(ld1, ld2));