Java语言8新特性介绍之新时间日期API
小标 2018-11-26 来源 : 阅读 917 评论 0

摘要:本文主要向大家介绍了Java语言8新特性介绍之新时间日期API,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了Java语言8新特性介绍之新时间日期API,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


1,LocalDate、 LocalTime、 LocalDateTime


LocalDate、 LocalTime、 LocalDateTime 类的实 例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。


2,Instant时间戳


用于“时间戳”的运算。它是以Unix元年(传统 的设定为UTC时区1970年1月1日午夜时分)开始所经历的描述进行运算


3,Duration 和 Period


Duration:用于计算两个“时间”间隔


Period:用于计算两个“日期”间隔


4,日期的操纵


TemporalAdjuster : 时间校正器。有时我们可能需要获 取例如:将日期调整到“下个周日”等操作。


TemporalAdjusters : 该类通过静态方法提供了大量的常用 TemporalAdjuster 的实现。例如获取下个周日:


5,解析与格式化


java.time.format.DateTimeFormatter 类:该类提供了三种


格式化方法:


预定义的标准格式


语言环境相关的格式


自定义的格式


6,时区的处理


Java8 中加入了对时区的支持,带时区的时间为分别为: ZonedDate、 ZonedTime、 ZonedDateTime其中每个时区都对应着 ID,地区ID都为 “{区域}/{城市}”的格式


例如 : Asia/Shanghai 等


ZoneId:该类中包含了所有的时区信息


getAvailableZoneIds() : 可以获取所有时区时区信息


of(id) : 用指定的时区信息获取 ZoneId 对象


时间api使用示例:

package com.atguigu.java8;

 

import java.time.DayOfWeek;

import java.time.Duration;

import java.time.Instant;

import java.time.LocalDate;

import java.time.LocalDateTime;

import java.time.OffsetDateTime;

import java.time.Period;

import java.time.ZoneId;

import java.time.ZoneOffset;

import java.time.ZonedDateTime;

import java.time.format.DateTimeFormatter;

import java.time.temporal.TemporalAdjusters;

import java.util.Set;

 

import org.junit.Test;

 

public class TestLocalDateTime {

     

    //6.ZonedDate、ZonedTime、ZonedDateTime : 带时区的时间或日期

    @Test

    public void test7(){

        LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));

        System.out.println(ldt);

         

        ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("US/Pacific"));

        System.out.println(zdt);

    }

     

    @Test

    public void test6(){

        Set<string> set = ZoneId.getAvailableZoneIds();

        set.forEach(System.out::println);

    }

 

     

    //5. DateTimeFormatter : 解析和格式化日期或时间

    @Test

    public void test5(){

//      DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE;

         

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss E");

         

        LocalDateTime ldt = LocalDateTime.now();

        String strDate = ldt.format(dtf);

         

        System.out.println(strDate);

         

        LocalDateTime newLdt = ldt.parse(strDate, dtf);

        System.out.println(newLdt);

    }

     

    //4. TemporalAdjuster : 时间校正器

    @Test

    public void test4(){

    LocalDateTime ldt = LocalDateTime.now();

        System.out.println(ldt);

         

        LocalDateTime ldt2 = ldt.withDayOfMonth(10);

        System.out.println(ldt2);

         

        LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));

        System.out.println(ldt3);

         

        //自定义:下一个工作日

        LocalDateTime ldt5 = ldt.with((l) -> {

            LocalDateTime ldt4 = (LocalDateTime) l;

             

            DayOfWeek dow = ldt4.getDayOfWeek();

             

            if(dow.equals(DayOfWeek.FRIDAY)){

                return ldt4.plusDays(3);

            }else if(dow.equals(DayOfWeek.SATURDAY)){

                return ldt4.plusDays(2);

            }else{

                return ldt4.plusDays(1);

            }

        });

         

        System.out.println(ldt5);

         

    }

     

    //3.

    //Duration : 用于计算两个“时间”间隔

    //Period : 用于计算两个“日期”间隔

    @Test

    public void test3(){

        Instant ins1 = Instant.now();

         

        System.out.println("--------------------");

        try {

            Thread.sleep(1000);

        } catch (InterruptedException e) {

        }

         

        Instant ins2 = Instant.now();

         

        System.out.println("所耗费时间为:" + Duration.between(ins1, ins2));

         

        System.out.println("----------------------------------");

         

        LocalDate ld1 = LocalDate.now();

        LocalDate ld2 = LocalDate.of(2011, 1, 1);

         

        Period pe = Period.between(ld2, ld1);

        System.out.println(pe.getYears());

        System.out.println(pe.getMonths());

        System.out.println(pe.getDays());

    }

     

    //2. Instant : 时间戳。 (使用 Unix 元年  1970年1月1日 00:00:00 所经历的毫秒值)

    @Test

    public void test2(){

        Instant ins = Instant.now();  //默认使用 UTC 时区

        System.out.println(ins);

         

        OffsetDateTime odt = ins.atOffset(ZoneOffset.ofHours(8));

        System.out.println(odt);

         

        System.out.println(ins.getNano());

         

        Instant ins2 = Instant.ofEpochSecond(5);

        System.out.println(ins2);

    }

     

    //1. LocalDate、LocalTime、LocalDateTime

    @Test

    public void test1(){

        LocalDateTime ldt = LocalDateTime.now();

        System.out.println(ldt);

         

        LocalDateTime ld2 = LocalDateTime.of(2016, 11, 21, 10<code     

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程