在Java8之前处理时间类都是Date、Calendar,关于这两个类我并没有学习过,只是听说用起来很复杂。Java8之后推出了LocalDate、LocalDateTime、LocalTime三个工具类,更好的处理时间。
LocalDate对应年月日
LocalDateTime对应年月日时分秒
LocalTime对应时分秒及纳秒
获取当地时间
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class LocalTest {
public static void main(String[] args) {
//通过三个时间类的now方法获取当地时间
LocalDate now=LocalDate.now();
LocalDateTime now2=LocalDateTime.now();
LocalTime now3=LocalTime.now();
System.out.println(now);
System.out.println(now2);
System.out.println(now3);
}
}
//输出结果
//2021-05-17
//2021-05-17T00:54:01.394389
//00:54:01.394716
关于LocalDateTime时间中间有个T的解释
国际标准化组织的国际标准,日期和时间的组合表示法编辑,合并表示时,要在时间前面加一大写字母T
自定义时间
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class LocalTest {
public static void main(String[] args) {
LocalDate time=LocalDate.of(2021,1,1);
LocalTime time2=LocalTime.of(1,1,1);
LocalDateTime time3=LocalDateTime.of(2021,1,1,1,1,1);
LocalDateTime time4=LocalDateTime.of(time,time2);
System.out.println(time);
System.out.println(time2);
System.out.println(time3);
System.out.println(time4);
}
}
//输出结果
//2021-01-01
//01:01:01
//2021-01-01T01:01:01
//2021-01-01T01:01:01
LocalTime使用of新建对象有三种参数形式,时分、分秒
、时分秒纳秒
LocalDateTime使用of新建对象时有四种参数形式,年月日时分、年月日时分秒、年月日时分秒纳秒、还有一种特殊形式
LocalDateTime lt=LocalDateTime.of(LocalDate date,LocalTime time )
//两个参数分别是LocalDate对象和LocalTime对象
获取时间具体的值
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class LocalTest {
public static void main(String[] args) {
LocalDate time=LocalDate.now();
LocalTime time2=LocalTime.now();
LocalDateTime time3=LocalDateTime.now();
//得到年
int year=time.getYear();
//得到月,有两种表示方式
int month=time.getMonth().getValue();
int month2=time.getMonthValue();
//得到日期
int day=time.getDayOfMonth();
//得到星期几
int date=time.getDayOfWeek().getValue();
//得到小时
int hour=time2.getHour();
//得到分钟
int minute=time2.getMinute();
//得到秒
int second=time2.getSecond();
//得到纳秒
int nano=time2.getNano();
System.out.println(time3);
System.out.println(year+"年");
System.out.println(month+"月");
System.out.println(month2+"月");
System.out.println(day+"日");
System.out.println("星期"+date);
System.out.println(hour+"时");
System.out.println(minute+"分");
System.out.println(second+"秒");
System.out.println(nano+"纳秒");
}
}
//输出结果
//2021-05-17T14:06:57.719849
//2021年
//5月
//5月
//17日
//星期1
//14时
//6分
//57秒
//719733000纳秒
得到月份有两种表示方式,得到星期几还要加个getValue,其他的都比较好记。
字符串转化为时间
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class LocalTest {
public static void main(String[] args) {
String date="2021-05-17";
LocalDate date1=LocalDate.parse(date);
String time="14:06:57";
LocalTime time1=LocalTime.parse(time);
String dateTime="2021-05-17T14:06:57";
LocalDateTime dateTime1=LocalDateTime.parse(dateTime);
System.out.println(date1);
System.out.println(time1);
System.out.println(dateTime1);
}
}
//输出结果
//2021-05-17
//14:06:57
//2021-05-17T14:06:57
字符串必须是代码所示的时间表达的结构,如果有些字符串是"2021/05/17"呢?用DateTimeFormatter来解决
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalTest {
public static void main(String[] args) {
String date="2021/05/17";
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate date1=LocalDate.parse(date,df);
String time="14/06/57";
DateTimeFormatter df2=DateTimeFormatter.ofPattern("HH/mm/ss");
LocalTime time1=LocalTime.parse(time,df2);
String dateTime="2021/05/17 14/06/57";
DateTimeFormatter df3=DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss");
LocalDateTime dateTime1=LocalDateTime.parse(dateTime,df3);
System.out.println(date1);
System.out.println(time1);
System.out.println(dateTime1);
}
}
//输出结果
//2021-05-17
//14:06:57
//2021-05-17T14:06:57
时间计算
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class LocalTest {
public static void main(String[] args) {
LocalDate date=LocalDate.now();
LocalTime time=LocalTime.now();
LocalDateTime dateTime=LocalDateTime.now();
//加五天
LocalDate date1=date.plusDays(5);
//加三分钟
LocalTime time1=time.plusMinutes(3);
//减两个月
LocalDateTime dateTime1=dateTime.minusMonths(2);
System.out.println(date);
System.out.println("加五天"+date1);
System.out.println(time);
System.out.println("加三分钟"+time1);
System.out.println(dateTime);
System.out.println("减两个月"+dateTime1);
}
}
//输出结果
//2021-05-17
//加五天2021-05-22
//14:34:51.959341
//加三分钟14:37:51.959341
//2021-05-17T14:34:51.959469
//减两个月2021-03-17T14:34:51.959469
关于时间加减的方法
LocalDate:
plusDays();
plusMonths();
plusWeeks();
plusYears();
minusDays();
minusMonths();
minusWeeks();
minusYears();
LocalTime:
plusHours();
plusMinutes();
plusSeconds();
plusNanos();
minusHours();
minusMinutes();
minusSeconds();
minusNanos();
LocalDateTime:
以上方法都有