以前时间类存在的问题
1.date是可变的,是线程不安全的。
2.类比较多,既有java.util.Date、又有java.sql.Date,同时Data的format和parse又在java.util.txt下。
1.不变性:在新的时间API中,所有的类都是不变的,加上final。
2.清晰:每个类中都定义了parse和format方法。
3.实用:每个类都实现了加、减等方法。
LocalDate: java8中的日期
LocalTime: java8中的时间
LocalTime: java8中的日期时间
日期:LocalDate
@Test
public void localDateTest() {
LocalDate today = LocalDate.now();
System.out.println(today);
LocalDate firstDay_2017 = LocalDate.of(2017, Month.JANUARY, 1);
System.out.println("Specific Date="+firstDay_2017);
LocalDate todayShanghai = LocalDate.now(ZoneId.of("Asia/Shanghai"));
System.out.println(todayShanghai);
}
时间: LocalTime
@Test
public void localTimeTest() {
LocalTime toTime = LocalTime.now();
System.out.println(toTime);
LocalTime time = LocalTime.of(12,35,26,266);
System.out.println(time);
LocalTime timeKolkata = LocalTime.now(ZoneId.of("Asia/Kolkata"));
System.out.println("Current Time in IST="+timeKolkata);
}
日期时间:LocalDateTime
@Test
public void localDateTimeTest() {
LocalDateTime currentTime = LocalDateTime.now();
System.out.println(currentTime);
LocalDateTime dateTime = LocalDateTime.of(2017, Month.FEBRUARY,12,15,52,16,235);
System.out.println(dateTime);
LocalDateTime todayKolkata = LocalDateTime.now(ZoneId.of("Asia/Kolkata"));
System.out.println("Current Date in IST="+todayKolkata);
}
基本操作,增加修改等
@Test
public void dateTimeOperateTest() {
LocalDateTime currentTime = LocalDateTime.now();
System.out.println("currentTime:" + currentTime);
LocalDateTime plusOneHours = currentTime.plusHours(1);
System.out.println("plus 1 hour:" + plusOneHours);
LocalDateTime plusTwoDay = currentTime.plusDays(2);
System.out.println("plus 2 Day:" + plusTwoDay);
LocalDateTime setHour0 = currentTime.withHour(0);
System.out.println("setHour0:" + setHour0);
//such as 'GMT+2' or 'UTC+01:00'
currentTime.atZone(ZoneId.of("GMT+2"));
System.out.println("GMT+2:" + currentTime);
}
格式化和解析
@Test
public void parseOrFormatTest() {
LocalDateTime currentTime = LocalDateTime.now();
System.out.println(currentTime.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")));
LocalDateTime parseTime = LocalDateTime.parse("2017年09月19日 12:12:12", DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"));
System.out.println(parseTime);
}