JAVA8新特性(五)——DateTime API

Date Time API

老版问题

以前时间类存在的问题

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);
}

猜你喜欢

转载自blog.csdn.net/luo4105/article/details/78032809