1. Date类
1.1 概述
计算机中时间原点:1970年1月1日00:00:00
时间换算单位:1秒 = 1000毫秒
Date代表了一个特定的时间,精确到毫秒
1.2 方法
构造方法:
演示代码:
//public Date()
Date d1 = new Date();
//pubic Date(long date)
long date = 1000*60*60
Date d2 = new Date(date);
常用方法:
演示代码:
//public long getTime()
Date d = new Date();
d.getTime();
//public void setTime(long time)
long time = System.currentTimeMillis();
d.setTime(time);
1.3 SimpleDateFormat类
概述:SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
构造方法:
常用方法:
格式化(从Date到String)
public final String format(Date date)//将日期格式化为时间字符串。
解析(从String到Date)
public Date parse(String source)//从给定的字符串开始解析文本为日期
2. LocaDateTime类
2.1 分类
LocaDate 表示日期(年月日)
LocalTime 表示时间(时分秒)
LOvalDateTime 表示时间+日期(年月日时分秒)
2.2 LocalDateTime创建方法
方法:
演示代码:
//public static LocalDateTime now();
LocalDateTime now = LocalDateTime.now();
//public static LocalDateTime of(年,月,日,时,分,秒)
LocalDateTime localDateTime = LocalDateTime.of(2000,11,11,,11,11,11);
2.3 LocalDateTime获取方法
方法说明:
2.4 LocalDateTime转换方法
方法说明:
2.5 LocalDateTime格式化和解析
方法说明:
演示代码:
//public String format(指定格式)
LocalDateTime localDateTime = LocalDateTimme.of(2020,12,12)
//public static DateTimeFormatter ofPattern(String pattern)
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String s = localDateTime.format(pattern);
//public LocalDateTime parse(解析字符串,解析格式)
String s = "2020年12月12日";
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime parse = LocalDateTime.parse(s,pattern);
2.6 LocalDateTime增加或减少时间方法
方法说明:
2.7 LocalDateTime减少或增加时间方法
方法说明:
2.8 LocalDateTime修改方法
说明方法:
3. Period和Duration
Period方法说明:
演示代码:
//public static Period between(开始时间,结束时间) 计算两个"时间"的间隔
LocalDate localDate1 = LocalDate.of(2020, 1, 1);
LocalDate localDate2 = LocalDate.of(2048, 12, 12);
Period period = Period.between(localDate1, localDate2);
System.out.println(period);//P28Y11M11D
//public int getYears() 获得这段时间的年数
System.out.println(period.getYears());//28
//public int getMonths() 获得此期间的月数
System.out.println(period.getMonths());//11
//public int getDays() 获得此期间的天数
System.out.println(period.getDays());//11
//public long toTotalMonths() 获取此期间的总月数
System.out.println(period.toTotalMonths());//347
Duration方法说明:
演示说明:
//public static Duration between(开始时间,结束时间) 计算两个“时间"的间隔
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 1, 1, 13, 14, 15);
LocalDateTime localDateTime2 = LocalDateTime.of(2020, 1, 2, 11, 12, 13);
Duration duration = Duration.between(localDateTime1, localDateTime2);
System.out.println(duration);//PT21H57M58S
//public long toSeconds() 获得此时间间隔的秒
System.out.println(duration.toSeconds());//79078
//public int toMillis() 获得此时间间隔的毫秒
System.out.println(duration.toMillis());//79078000
//public int toNanos() 获得此时间间隔的纳秒
System.out.println(duration.toNanos());//79078000000000
4. 总结
LocalDate 和 Date 的区别:
java.util.Date是Java旧版的日期和时间类,而java.time.LocalDate是Java 8中引入的新日期API的一部分。
java.util.Date是可变的,并且不是线程安全的,而java.time.LocalDate是不可变的和线程安全的。
java.util.Date表示一个时间戳,同时包含日期和时间信息,而java.time.LocalDate仅表示日期信息,不包含时间。
java.util.Date中的方法大多已被废弃,而java.time.LocalDate提供了一组新的方法来操作日期,更符合现代编程习惯。