Java基础[6]时间API

来源:互联网 发布:传智播客java视频教程 编辑:程序博客网 时间:2024/06/04 18:29

(推荐使用java8新的时间API)

java8新的时间API

1 Java8 java.time.* 下面的常用API

DateTimeFormatterLocalDateLocalDateTimeLocalTimeClockMonthDayYearMonth

2 java8时间API优点

  • [线程安全]java.time包下的所有类都是不可变类型且线程安全。老的时间API,java.util.Date为可变类型,以及SimpleDateFormat为非线程安全使其应用非常受限。

  • [格式化便捷]DateTimeFormatter类用来格式化和解析时间,线程安全。不用再依赖Joda Time第三方库。


  • [判断闰年]LocalDate类有一个很实用的方法isLeapYear()判断该实例是否是一个闰年。

  • [时间戳]增加了一个Clock时钟类用于获取当时的时间戳,或当前时区下的日期时间信息。以前用到System.currentTimeInMillis()和TimeZone.getDefault()的地方都可用Clock替换。

    3 示例代码

import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.format.DateTimeFormatter;import org.junit.Test;/** * @author gtc46052 * @version $Id: JavaTime.java, v 0.1 2017年7月30日 上午10:11:14 gao tianci Exp $ */public class JavaTime {    @Test    public void test() {        System.out.println("/************************************************************************************/");        /************************************************************************************/        // LocalDate;LocalTime;LocalDateTime 得到时间对象的一组方法,LocalDateTime最后一位是纳秒,1秒=1000        // 000 000纳秒        System.out.println("获取时间:");        System.out.println("LocalDateTime.now()-->" + LocalDateTime.now());        System.out.println("LocalDate.now()-->" + LocalDate.now());        System.out.println("LocalTime.now()-->" + LocalTime.now());        // 也都有of()方法,都有多个重载,灵活使用        System.out.println("LocalDate.of(2017,05,10)-->" + LocalDate.of(2017, 05, 10));        System.out.println("LocalTime.of(2017,05,10,22,33,44,1000)-->" + LocalTime.of(22, 33, 44, 1000));        System.out.println(                "LocalDateTime.of(2017,05,10,22,33,44,1000)-->" + LocalDateTime.of(2017, 05, 10, 22, 33, 44, 1000));        // 可获取年,月,日,时,分,秒,纳秒        System.out.println("LocalDateTime.now()-->" + LocalDateTime.now());        System.out.println("LocalDateTime.now().getYear()-->" + LocalDateTime.now().getYear());        System.out.println("LocalDateTime.now().getMonthValue()-->" + LocalDateTime.now().getMonthValue());        System.out.println("LocalDateTime.now().getDayOfMonth()-->" + LocalDateTime.now().getDayOfMonth());        System.out.println("LocalDateTime.now().getHour()-->" + LocalDateTime.now().getHour());        System.out.println("LocalDateTime.now().getMinute()-->" + LocalDateTime.now().getMinute());        System.out.println("LocalDateTime.now().getSecond()-->" + LocalDateTime.now().getSecond());        System.out.println("LocalDateTime.now().getNano()-->" + LocalDateTime.now().getNano());        System.out.println("/************************************************************************************/");        /************************************************************************************/        System.out.println("解析时间1:(去掉纳秒,秒等)");        LocalDateTime localDateTime = LocalDateTime.now();        System.out.println("localDateTime-->" + localDateTime);        System.out.println("localDateTime.withNano(0)-->" + localDateTime.withNano(0));        System.out.println("localDateTime.withSecond(0)-->" + localDateTime.withSecond(0));        System.out.println("localDateTime.withSecond(0)..withNano(0)-->" + localDateTime.withSecond(0).withNano(0));        try {            System.out                    .println("/************************************************************************************/");            /************************************************************************************/            // 一般使用自定义的格式来达到(字符串->时间)(时间->字符串),更加方便灵活            System.out.println("格式化和解析时间2:(时间->字符串)");            DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");            System.out.println("格式化为" + "yyyy-MM-dd hh:mm:ss-->" + LocalDateTime.now().format(format));            System.out                    .println("/************************************************************************************/");            /************************************************************************************/            System.out.println("格式化和解析时间3:(字符串->时间)||可一次指定多格式字符串");            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("[yyyy/MM/dd HH:mm:ss.SSSSSS]"                    + "[yyyy-MM-dd HH:mm:ss]" + "[dd-MM-yyyy HH:mm:ss]" + "[ddMMyyyy HH:mm:ss]");            System.out.println("[示例]指定可匹配的多格式:" + "[yyyy/MM/dd HH:mm:ss.SSSSSS]" + "[yyyy-MM-dd HH:mm:ss]"                    + "[dd-MM-yyyy HH:mm:ss]" + "[ddMMyyyy HH:mm:ss]");            System.out.println(LocalDateTime.parse("2016/03/23 22:33:44.256145", formatter));            System.out.println(LocalDateTime.parse("2016-03-23 22:33:44", formatter));            System.out.println(LocalDateTime.parse("23-05-2016 22:33:44", formatter));            System.out.println(LocalDateTime.parse("23052016 22:33:44", formatter));        } catch (Exception e) {            System.out.println(e);        }    }}

结果:

/************************************************************************************/获取时间:LocalDateTime.now()-->2017-07-30T15:24:23.841LocalDate.now()-->2017-07-30LocalTime.now()-->15:24:23.841LocalDate.of(2017,05,10)-->2017-05-10LocalTime.of(2017,05,10,22,33,44,1000)-->22:33:44.000001LocalDateTime.of(2017,05,10,22,33,44,1000)-->2017-05-10T22:33:44.000001LocalDateTime.now()-->2017-07-30T15:24:23.842LocalDateTime.now().getYear()-->2017LocalDateTime.now().getMonthValue()-->7LocalDateTime.now().getDayOfMonth()-->30LocalDateTime.now().getHour()-->15LocalDateTime.now().getMinute()-->24LocalDateTime.now().getSecond()-->23LocalDateTime.now().getNano()-->842000000/************************************************************************************/解析时间1:(去掉纳秒,秒等)localDateTime-->2017-07-30T15:24:23.842localDateTime.withNano(0)-->2017-07-30T15:24:23localDateTime.withSecond(0)-->2017-07-30T15:24:00.842localDateTime.withSecond(0)..withNano(0)-->2017-07-30T15:24/************************************************************************************/格式化和解析时间2:(时间->字符串)格式化为yyyy-MM-dd hh:mm:ss-->2017-07-30 03:24:23/************************************************************************************/格式化和解析时间3:(字符串->时间)||可一次指定多格式字符串[示例]指定可匹配的多格式:[yyyy/MM/dd HH:mm:ss.SSSSSS][yyyy-MM-dd HH:mm:ss][dd-MM-yyyy HH:mm:ss][ddMMyyyy HH:mm:ss]2016-03-23T22:33:44.2561452016-03-23T22:33:442016-05-23T22:33:442016-05-23T22:33:44

4 java老的时间API总结

这里写图片描述

原创粉丝点击