JDK8前时间类
Date类
Date表示一个时间,时间精确到毫秒。时间的原点是1970年1月1日0时0分0秒; 在中国时间原点在国际标准时间基础上加8个小时。
public Date()
创建一个Date对象,表示的时间是当前系统时间。
public Date(long date)
创建一个Date对象,表示的时间是指定毫秒值。
-----------------------------
Date date1=new Date(); //当前时间
Date date2=new Date(1000L*60*60*24); //从1970年1月1日,往后过了一天
Date date2=new Date(-1000L*60*60*24); //从1970年1月1日,往前过了一天
Date的常用方法
public void setTime(long time)
设置Date对象的时间毫秒值
public long getTime()
获取Date对象的时间毫秒值
SimpleDateFormat类
SimpleDateFormat是用于对时间进行格式化和解析的便捷类。
时间的模式:
y 年
M 月
d 日
H 时
m 分
s 秒
//创建SimpleDateFormat对象,就是在创建时间的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
时间格式化和解析的方法如下
public Date parse(String source)
把字符串转换为Date对象(这叫做解析)
public String format(Date date)
把Date对象转换为字符串(这叫格式化)
- 计算现在距离2020年11月11日,还有多少天?
//创建日期格式化的对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
//定义目标时间字符串
String target = "2020年11月11日";
//获取目标时间毫秒值
Date targetDate = sdf.parse(target);
long targetTime = targetDate.getTime();
//获取当前时间毫秒值
long cureentTime = System.currentTimeMillis();
//目标时间 - 当前时间
long day = (targetTime - cureentTime) / 1000 / 60 / 60 / 24;
System.out.println("距离剁手节还有"+day+"天");
JDK8的时间类
JDK8中提供了3个和时间相关的类,根据需要可以选择不同的类来使用。
LocalDateTime 包含 年、月、日、时、分、秒
LocalDate 包含 年、月、日
LocalTime 包含 时、分、秒
LocalDateTime获取对象
以上三个类都可以调用下面的方法来获取对象,以LocalDateTime为例。
public static LocalDateTime now()
获取当前时间的对象
public static LocalDateTime of(int year,int month,int day,int hour,int minute,int second)
获取指定时间的对象
LocalDateTime转换方法
public LocalDate toLocalDate()
把LocalDateTime转换为LocalDate(包含 年、月、日)
public LocalTime toLocalTime()
把LocalDateTime转换为LocalTime(包含 时、分、秒)
LocalDateTime格式化解析
在进行格式化解析之前,先得获取格式化对象,来指定日期的格式
DateTimeFormater formater = DateTimeFormater.ofPattern("yyyy-MM-dd HH:mm:ss");
public String format(DateTimeFormater format)
把LocalDateTime格式化为一个字符串,需要指定格式化对象
public static LocalDateTime parse(String s, DateTimeFormater format)
把字符串解析为LocalDateTime对象,,需要指定格式化对象
格式化解析演示
//获取日期格式化的对象。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
//对日期进行格式化(把LocalDateTime转换为String)
LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 05, 05, 05);
String format = localDateTime.format(formatter);
System.out.println(format);
//对日期字符串进行解析(把String转换为LocalDateTime)
LocalDateTime parse = LocalDateTime.parse("1996年10月10日 18:20:20", formatter);
System.out.println(parse);
LocalDateTime加减时间
参数为正,表示往后加多少时间; 参数为负数,表示往前减多少时间。
public LocalDateTime plusDays(long days)
返回一份本 LocalDateTime在天期间添加指定的。
public LocalDateTime plusHours(long hours)
返回一份本 LocalDateTime在指定时间内添加时间。
public LocalDateTime plusMinutes(long minutes)
返回一份本 LocalDateTime在几分钟之内指定期间补充。
public LocalDateTime plusMonths(long months)
返回一份本 LocalDateTime在月期添加指定的。
public LocalDateTime plusNanos(long nanos)
返回一份本 LocalDateTime在纳秒指定期间补充。
public LocalDateTime plusSeconds(long seconds)
返回一份本 LocalDateTime在指定时间内增加秒。
public LocalDateTime plusWeeks(long weeks)
返回一份本 LocalDateTime在周指定期间补充。
public LocalDateTime plusYears(long years)
返回一份本 LocalDateTime年指定期间补充。
LocalDateTime修改时间
public LocalDateTime withDayOfMonth(int dayOfMonth)
返回一份本 LocalDateTime与月改变的一天。
public LocalDateTime withDayOfYear(int dayOfYear)
返回一份本 LocalDateTime与天的年变化。
public LocalDateTime withHour(int hour)
返回一份本 LocalDateTime与一个值改变。
public LocalDateTime withMinute(int minute)
返回一份本 LocalDateTime与分钟小时值改变。
public LocalDateTime withMonth(int month)
返回一份本 LocalDateTime与月的年变化。
public LocalDateTime withNano(int nanoOfSecond)
返回一份本 LocalDateTime与纳米二值改变。
public LocalDateTime withSecond(int second)
返回一份本 LocalDateTime第二分钟值改变。
public LocalDateTime withYear(int year)
返回一份本 LocalDateTime与年变化。
时间间隔计算
- Period类(年月日)
public static Period between(LocalDate start, LocalDate end)
获得由年数 Period月,和两个日期之间的天数。
public int getDays()
获取此期间的天数。
public int getMonths()
获取此期间的月数。
public int getYears()
获取此期间的年数。
- Duration类(时分秒)
public static Duration between(Temporal start, Temporal end)
获得 Duration表示两个时间对象之间的时间。
public long getSeconds()
获取在此期间的秒数。
public int getNano()
得到的纳秒数在第二在这个时间。
public long toDays()
获取在此期间的天数。
public long toHours()
获取在此期间的几个小时数。
public long toMillis()
将此持续时间转换为毫秒内的总长度。
public long toMinutes()
获取在此期间的分钟数。
public long toNanos()
将这个时间的总长度来表示为一个 long。