计算机中的时间原点
1970年1月1日 00:00:00
我国的时间原点则是:1970年1月1日 08:00:00
Date类常用的构造方法
public Date(); // 空参构造,表示默认时间也就是电脑的当前时间。
public Date(long date); // 有参构造,表示指定时间。
Date类常用的成员方法
public long getTime(){} // 获取时间对象的毫秒值。
public void setTime(long time){} // 设置时间,传递时间原点所过的毫秒值。
SimpleDateFormat类——对Date对象进行格式化和解析
常用字母对应解析如下:(区分大小写)
y —— 年
M —— 月
d —— 日
H —— 时
m —— 分
s —— 秒
SimpleDateFormat类的构造方法
public SimpleDateFormat() // 空参构造,使用默认格式。
public SimpleDateFormat(String pattern) // 有参构造,将对应字母以字符串的形式传入你想要的格式。
SimpleDateFormat格式化和解析日期
1.格式化:将Date的时间格式化为日期字符串
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(date);
System.out.println(sdf.format(date));
打印结果:
Mon Feb 21 15:26:57 CST 2022
2022-02-21 15:26:57
2.解析:将日期字符串解析为时间
String s = "2022-02-21 15:26:57";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//这里的格式必须跟字符串的格式一模一样
Date date = sdf.parse(s); // 这里会有异常,直接throws抛出就行
System.out.println(date);
打印结果:
Mon Feb 21 15:26:57 CST 2022
JDK8新增的日期类
JDK8中将Date对象分成了以下三个类:
LocalDate:表示年月日。
LocalTime:表示时分秒。
LocalDateTime:便是年月日 时分秒。
(最常用的时LocalDateTime类)
LocalDateTime类
1.public static LocalDateTime now() // 获取系统当前时间的方法。
2.public static LocalDateTime of(年,月,日,时,分,秒) // 传入对应int值返回时间格式的方法。
LocalDateTime类的获取方法
public int getYear() // 获取年。
public int getMonthValue() // 获取月。
public int getDayOfMonth() // 获取月中第几天。
public int getDayOfYear() // 获取年中第几天。
public DayOfWeek() // 获取星期。
public int getMinute() // 获取分钟。
public int getHour() // 获取小时。
LocalDateTime类的转换方法
public LocalDate toLocalDate() // 去除时分秒
public LocalDate toLocalTime() // 去除年月日
LocalDateTime类的格式化和解析
public String format(指定格式) // 把一个LocalDateTime对象按指定格式转换成一个字符串。
public LocalDateTime parse(待解析的字符串,解析格式) // 把日期字符串解析为一个LocalDateTime对象。
JDK8中的格式化器:public static DateTimeFormatter ofPattern(String pattern) // 按照传入的字符串格式 创建一个DateTimeFormatter格式化器对象。
格式化
// 获取LocalDateTime对象
LocalDateTime now = LocalDateTime.now();
System.out.println("格式化前 " + now);
// 获取格式化器
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String s_now = now.format(dateTimeFormatter);
System.out.println("格式化后 " + s_now);
打印结果:
格式化前 2022-02-21T16:51:27.098
格式化后 2022年02月21日 16:51:27
解析
String s = "2022年02月21日 16:51:27";
System.out.println("解析前 " + s);
// 获取格式化器
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(s, dateTimeFormatter);
System.out.println("解析后 " + localDateTime);
打印结果:
解析前 2022年02月21日 16:51:27
解析后 2022-02-21T16:51:27
LocalDateTime类的plus系列方法
先要获取LocalDateTime对象再调用,传正值加 负值减。
public LocalDateTime plusYear(long year) // 年加或年减。
public LocalDateTime plusMonths(long month) // 月加或月减。
public LocalDateTime plusDays(long day) // 日加或日减。
public LocalDateTime plusHours(long hour) // 时加或时减。
public LocalDateTime plusMinutes(long minute) // 分加或分减。
public LocalDateTime plusSeconds(long second) // 秒加或秒减。
public LocalDateTime plusWeeks(long week) // 周加或周减。
LocalDateTime类的minus系列方法
先要获取LocalDateTime对象再调用,与plus相反。
public LocalDateTime minusYear(long year) // 年减或年加。
public LocalDateTime minusMonths(long month) // 月减或月加。
public LocalDateTime minusDays(long day) // 日减或日加。
public LocalDateTime minusHours(long hour) // 时减或时加。
public LocalDateTime minusMinutes(long minute) // 分减或分加。
public LocalDateTime minusSeconds(long second) // 秒减或秒加。
public LocalDateTime minusWeeks(long week) // 周减或周加。
LocalDateTime类的with系列方法
先要获取LocalDateTime对象再调用。(注意传递有效值)
public LocalDateTime withYear(int year) // 直接修改年
public LocalDateTime withMonth(int month) // 直接修改月
public LocalDateTime withDayOfMonth(int dayofmonth) // 直接修改天(一个月中的第几天)
public LocalDateTime withDayOfYear(int dayofyear) // 直接修改天(一年中的第几天)
public LocalDateTime withHour(int hour) // 直接修改时
public LocalDateTime withMinute(int minute) // 直接修改分
public LocalDateTime withSecond(int second) // 直接修改秒
Period类时间间隔对象
public static Period between(开始时间,结束时间) // 计算出时间间隔并返回Period对象。(传入的时间都是LocalDate对象)
public int getYears() // 获取间隔对象的间隔年数。
public int getMonths() // 获取间隔对象的间隔月数。(忽略年的月差)
public int getDays() // 获取间隔对象的间隔天数。
public long toTotalMonths() // 获取间隔对象的间隔总月数。(不忽略年的总月数)
Duration类时间间隔对象
public static Duration between(开始时间,结束时间) // 计算出时间间隔并返回Period对象。(形参是接口类,可以传LocalDateTime对象)
public long toDays() // 获取间隔的天数
public long toHours() // 获取间隔的小时数
public long totoMinutes() // 获取间隔的分钟数
public long toMillis() // 获取间隔的毫秒数
public long toNanos() // 获取间隔的纳秒数