JAVA8新特性
来源:互联网 发布:淘宝评价完怎么不显示 编辑:程序博客网 时间:2024/06/03 20:28
前言
JAVA8的新特性之一就是DATE/TIME的改善,之前的时间API确实不够好用,JAVA8借鉴了Joda-Time的精华对旧的API进行了改善和升级API,正好最近工作中常常使用到时间,做一个使用的总结.
结构介绍
今天主要介绍常用的时间类和格式化相关的功能.
LocalTime
localTime顾名思义就是介绍具体的时间的类.
创建时间对象
// current time 11:34:53.201LocalTime currentTime = LocalTime.now();//of重载了多个方法,可以根据自己的需求选择合适的方法// 12:00LocalTime midday = LocalTime.of(12, 0); // 13:10:15LocalTime afterMidday = LocalTime.of(13, 10, 15);// 10:00:01LocalTime fromSecondsOfDay = LocalTime.ofSecondOfDay(36001);
获取时间的某一部分
接下来看一下如何通过localTime对象获取具体的时分秒
//11int hour = currentTime.getHour();//34int minute = currentTime.getMinute();//53int second = currentTime.getSecond();//733int nano = currentTime.getNano();
另外补充
- withXXX方法为通过改变当前时间的时或分或秒生成新时间
- plusXXX方法为在当前时间对象的基础上加多少小时或者多少分钟或者多少秒生成新时间
- minusXXX方法则为在当前时间对象的基础上减多少小时或者多少分钟或者多少秒生成新时间
格式化时间
//格式化时间 11:34:53.201String basic = currentTime.format(DateTimeFormatter.ISO_LOCAL_TIME);//12:00:00String middayFormat = midday.format(DateTimeFormatter.ISO_LOCAL_TIME);//自定义格式化时间 11:34:53String custom = currentTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));//解析时间LocalTime basicTime = LocalTime.parse(basic);//12:00LocalTime middayParse = LocalTime.parse(middayFormat);//自定义格式解析时间LocalTime customTime = LocalTime.parse(custom, DateTimeFormatter.ofPattern("HH:mm:ss"));
我们不需要关系DateTimeFormatter只需要关心我们格式化和解析的格式就可以了,中间还添加不完整格式的时间进行格式化.
LolcalDate
LocalDate顾名思义就是本地日期的类,用来专门处理日期相关的操作
创建日期
// the current dateLocalDate currentDate = LocalDate.now();// 2017-11-25LocalDate day1 = LocalDate.of(2017, Month.NOVEMBER, 25);// 2014-05-11LocalDate day2 = LocalDate.of(2014, 5, 11);// 2010的第65天LocalDate day3 = LocalDate.ofYearDay(2010, 65);//1970-01-02 从1970的第一天加1天LocalDate epochDay = LocalDate.ofEpochDay(1);
修改日期
会生成新的日期,本演示结果省略
day1.withYear(1993);//修改年份并创建日期day1.withMonth(3); //会自动更新天数越界的问题day1.withDayOfYear(23);//年份不变,改为当前年的第23天day1.withDayOfMonth(3);//当前月的第三天day1.plusDays(3); //当前日期加3天day1.plusYears(3); //加3年day1.plusWeeks(3); //加3周day1.plusMonths(3); //加三个月
获取日期
//=============================获取日期================================int year = day1.getYear();//获取年份Month month = day1.getMonth(); //获取月份 --为枚举类int dayOfYear = day1.getDayOfYear(); //当前年的多少天int dayOfMonth = day1.getDayOfMonth(); //当前月的多少天DayOfWeek dayOfWeek = day1.getDayOfWeek(); //当前周的第几天 --枚举类
格式化日期
和格式化时间类似
String format = day1.format(DateTimeFormatter.ISO_LOCAL_DATE);String customDate = day1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));LocalDate parse = LocalDate.parse(format);LocalDate.parse(customDate,DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDateTime
顾名思义就是具体的日期+时间的类,可以理解为localDate和localTime的结合体.
创建时间
// 当前日期+时间LocalDateTime currentDateTime = LocalDateTime.now();// 2017-10-12 12:30LocalDateTime localDateTime1 = LocalDateTime.of(2017, 10, 12, 12, 30);// 2014-11-4 12:10:05LocalDateTime localDateTime2 = LocalDateTime.of(2014, Month.NOVEMBER, 4, 12, 10,5);//日期+时间拼接LocalDateTime localDateTime3= LocalDateTime.of(currentDate, currentTime);
其他
也有和LocalDate和LocalTime类似的
- getXXX方法,包括年月日时分秒
- withXXX方法,更改局部生成新对象,包括年月日时分秒
- plusXXX方法,在当前的基础上加一定的时间
- minusXXX方法,当前时间基础上减一定的时间
- format和parse方法格式化对象
汇总
1.compareTo,isBefore,isAfter方法
比较两个对象的大小,三种类都有
2.三者的转换
//通过localDateTime获取localDateLocalDate localDate = currentDateTime.toLocalDate();//通过localDateTime获取localTimeLocalTime localTime = currentDateTime.toLocalTime();//通过localTime+localDate生产localDateTimeLocalDateTime localDateTime4 = localDate.atTime(localTime);LocalDateTime localDateTime5 = localTime.atDate(localDate);
TimeZone
时区的时间操作,将本地时间转化为对应时区的时间
ZoneId类 记录时区信息和转换时区的操作
ZonedDateTime berlinDateTime = ZonedDateTime.of(dateTime, ZoneId.of("Europe/Berlin"));
TIMESTAMP
时间戳,在JAVA8中使用Instant作为时间戳类
//当前时间戳Instant now = Instant.now();// 1262334567秒转化为时间戳 Instant.ofEpochSecond(1262334567);//时间戳转成毫秒的数字 long toEpochMillis = now.toEpochMilli();
他也有和localTime相类似的plus,minus,compareTo方法.
TimeStamp,Instant,Date的装换
Date date = Date.from(now);Instant instant = date.toInstant();Timestamp timestamp = Timestamp.from(now);Instant instant1 = timestamp.toInstant();
结语
就简单的介绍到这里,当然java.time包下面还有很多其他的内容,可以自行去学习和研究使用.总之JAVA的time包极大的便利我们的日常对时间的需要!!!!
与君共勉!!!
阅读全文
0 0
- java8 新特性
- java8新特性 ---译
- Java8新特性教程
- Java8新特性学习
- JAVA8新特性
- Java8新特性详解
- JAVA8的新特性
- java8 新特性
- java8新特性
- java8 新特性
- JAVA8新特性一览
- Java8 新特性学习
- Java8新特性 Stream
- java8新特性
- java8新特性
- java8新特性
- java8新特性学习
- JAVA8新特性
- 几个常见的算法
- 漫画告诉你什么是屎一样的代码(屎里蕴含着代码的秘密)
- Spring—AOP介绍
- CentOS7 常用命令集合
- C# 程序关闭托盘图标不会自动消失
- JAVA8新特性
- 欢迎使用CSDN-markdown编辑器
- Java微信公众号--1--基本配置接入开发者模式
- Java学习笔记
- 我已经写了48年代码了,我感觉我还能写下去
- HorizontalScrollView 嵌套listview实现列表左右、上下滑动、控件复用等功能
- 文章标题
- 常见解析
- SQL server和access两种用SQL语句计算两个日期间隔的年、月以及天数