JDK新特性-LocalDateTime
菜鸟教程
一、写代码经常用到时间格式化,时间相加减(想知道前一天和后一天,等等),Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。
二、主要内容
1、NewDateUtils类JavaDoc开发文档
2、NewDateEnum:几种实际开发中用到的时间格式
package com.dl.jdk18;import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;/*** Created by yanshao on 2018/12/4.*/
public class NewDateUtils {//北京时间private static final String BEIJING = "Asia/Shanghai";//国际时间private static final String UTC = "Europe/London";/*** 获取指定year、month、day的LocalDateTime对象* @param year 年:2018* @param month 月:12* @param day 日:4* @return* */public static LocalDateTime getLocalDateTime(int year,int month,int day){return LocalDateTime.of(year,month,day,0,0);}/*** 获取指定year、month、day、minute,second的LocalDateTime对象* @param year 年:2018* @param month 月:12* @param day 日:4* @param hour 小时:18* @param minute 分钟:45* @param second 秒:22* @return* */public static LocalDateTime getLocalDateTime(int year,int month,int day,int hour,int minute,int second){return LocalDateTime.of(year,month,day,hour,minute,second);}/*** 获取当前指定格式的时间串* @param dateFormat 枚举类型,时间格式* @return 返回指定格式的时间串* */public static String format(NewDateEnum dateFormat){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 自定义时间格式,获取当前指定格式的时间串* @param dateFormat 时间格式,例如:yyyy-MM-dd* @return 返回指定格式的时间串* */public static String format(String dateFormat){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取当前指定时区的时间* @param zoneId 时区,例如北京时间:Asia/Shanghai* @param dateFormat 自定义返回的时间格式* @return* */public static String format(String zoneId,String dateFormat){return LocalDateTime.now(ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取当前指定时区的时间* @param zoneId 时区,例如北京时间:Asia/Shanghai* @param dateFormat 返回的时间格式,枚举类型* @return* */public static String format(String zoneId,NewDateEnum dateFormat){return LocalDateTime.now(ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(Date date,NewDateEnum dateFormat){//系统所在时区return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(Date date,String dateFormat){//系统所在时区return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取指定时间,指定返回时间格式的时间串* @param zoneId 时区* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(String zoneId,Date date,String dateFormat){return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取指定时间,指定返回时间格式的时间串* @param zoneId 时区* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(String zoneId,Date date,NewDateEnum dateFormat){return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param localDateTime 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(LocalDateTime localDateTime,NewDateEnum dateFormat){return localDateTime.format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param zoneId 时区* @param localDateTime 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(String zoneId,LocalDateTime localDateTime,NewDateEnum dateFormat){return localDateTime.atZone(ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param plusDays 加减天数* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String formatPlus(Long plusDays,Date date,String dateFormat){return LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault()).plusDays(plusDays).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取指定时间,指定返回时间格式的时间串* @param plusDays 加减天数* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String formatPlus(Long plusDays,Date date,NewDateEnum dateFormat){return LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault()).plusDays(plusDays).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param plusDays 加减天数* @param localDateTime 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String formatPlus(Long plusDays,LocalDateTime localDateTime,NewDateEnum dateFormat){return localDateTime.plusDays(plusDays).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param plusDays 加减天数* @param localDateTime 指定时间* @param dateFormat 指定返回的时间格式* @param zoneId 指定时区* @return* */public static String formatPlus(Long plusDays,LocalDateTime localDateTime,NewDateEnum dateFormat,String zoneId){return localDateTime.atZone(ZoneId.of(zoneId)).plusDays(plusDays).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}
}
3、NewDateUtils
package com.dl.jdk18;import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;/*** Created by yanshao on 2018/12/4.*/
public class NewDateUtils {//北京时间private static final String BEIJING = "Asia/Shanghai";//国际时间private static final String UTC = "Europe/London";/*** 获取当前指定格式的时间串* @param dateFormat 枚举类型,时间格式* @return 返回指定格式的时间串* */public static String format(NewDateEnum dateFormat){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 自定义时间格式,获取当前指定格式的时间串* @param dateFormat 时间格式,例如:yyyy-MM-dd* @return 返回指定格式的时间串* */public static String format(String dateFormat){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取当前指定时区的时间* @param zoneId 时区,例如北京时间:Asia/Shanghai* @param dateFormat 自定义返回的时间格式* @return* */public static String format(String zoneId,String dateFormat){return LocalDateTime.now(ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取当前指定时区的时间* @param zoneId 时区,例如北京时间:Asia/Shanghai* @param dateFormat 返回的时间格式,枚举类型* @return* */public static String format(String zoneId,NewDateEnum dateFormat){return LocalDateTime.now(ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(Date date,NewDateEnum dateFormat){//系统所在时区return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(Date date,String dateFormat){//系统所在时区return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取指定时间,指定返回时间格式的时间串* @param zoneId 时区* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(String zoneId,Date date,String dateFormat){return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取指定时间,指定返回时间格式的时间串* @param zoneId 时区* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String format(String zoneId,Date date,NewDateEnum dateFormat){return LocalDateTime.now().ofInstant(date.toInstant(),ZoneId.of(zoneId)).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}/*** 获取指定时间,指定返回时间格式的时间串* @param plusDays 加减天数* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String formatPlus(Long plusDays,Date date,String dateFormat){return LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault()).plusDays(plusDays).format(DateTimeFormatter.ofPattern(dateFormat));}/*** 获取指定时间,指定返回时间格式的时间串* @param plusDays 加减天数* @param date 指定时间* @param dateFormat 指定返回的时间格式* @return* */public static String formatPlus(Long plusDays,Date date,NewDateEnum dateFormat){return LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault()).plusDays(plusDays).format(DateTimeFormatter.ofPattern(dateFormat.getDateFormat()));}
}
这个utils中,有自定义时间格式,指定时间、指定时区、指定相加减天数的方法
4、NewDateTest:测试案例
package com.dl.jdk18;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;/*** Created by yanshao on 2018/12/4.*/
public class NewDateTest {public static void test(){LocalDateTime localDateTime = LocalDateTime.now();String str1 = localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);System.out.println("ISO_LOCAL_DATE_TIME>>"+str1);String str2 = localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE);System.out.println("ISO_LOCAL_DATE>>"+str2);String str3 = localDateTime.format(DateTimeFormatter.ISO_TIME);System.out.println("ISO_TIME>>"+str3);String str4 = localDateTime.format(DateTimeFormatter.BASIC_ISO_DATE);System.out.println("BASIC_ISO_DATE>>"+str4);String str5 = localDateTime.format(DateTimeFormatter.ISO_DATE);System.out.println("ISO_DATE>>"+str5);String str6 = localDateTime.format(DateTimeFormatter.ISO_DATE_TIME);System.out.println("ISO_DATE_TIME>>"+str6);}public static void test2(){String beijing = "Asia/Shanghai";System.out.println(NewDateUtils.format(NewDateEnum.DATE_FORMAT_4));System.out.println(NewDateUtils.format("yyyy-MM"));System.out.println(NewDateUtils.format(beijing,NewDateEnum.DATE_FORMAT_4.getDateFormat()));System.out.println(NewDateUtils.format(beijing,NewDateEnum.DATE_FORMAT_4));System.out.println(NewDateUtils.format(new Date(),NewDateEnum.DATE_FORMAT_1));System.out.println(NewDateUtils.format(beijing,new Date(),"HH/mm/ss/SSS"));System.out.println(NewDateUtils.formatPlus(2L,new Date(),NewDateEnum.DATE_FORMAT_3));System.out.println(NewDateUtils.formatPlus(-2L,new Date(),NewDateEnum.DATE_FORMAT_3));}public static void main(String[] args) {test();System.out.println(">>>>>>>>>>>>>>>>>>>>>>>");test2();}
}
5、JDK8-常用的几种时间格式
ISO_LOCAL_DATE_TIME>>2018-12-04T16:40:23.941
ISO_LOCAL_DATE>>2018-12-04
ISO_TIME>>16:40:23.941
BASIC_ISO_DATE>>20181204
ISO_DATE>>2018-12-04
ISO_DATE_TIME>>2018-12-04T16:40:23.941
6、zoneId列表(常用的都可以查到)
"Asia/Shanghai" 中国标准时间 (北京)"Asia/Hong_Kong" 香港时间 (香港)"Asia/Taipei" 台北时间 (台北)"Asia/Seoul" 首尔"Asia/Tokyo" 日本时间 (东京)"America/New_York" 美国东部时间 (纽约)"America/Denver" 美国山区时间 (丹佛)"America/Costa_Rica" 美国中部时间 (哥斯达黎加)"America/Chicago" 美国中部时间 (芝加哥)"America/Mexico_City" 美国中部时间 (墨西哥城)"America/Regina" 美国中部时间 (里贾纳)"America/Los_Angeles" 美国太平洋时间 (洛杉矶)"Pacific/Majuro" 马朱罗"Pacific/Midway" 中途岛"Pacific/Honolulu" 檀香山"America/Anchorage" 安克雷奇"America/Tijuana" 美国太平洋时间 (提华纳)"America/Phoenix" 美国山区时间 (凤凰城)"America/Chihuahua" 奇瓦瓦"America/Bogota" 哥伦比亚时间 (波哥大)"America/Caracas" 委内瑞拉时间 (加拉加斯)"America/Barbados" 大西洋时间 (巴巴多斯)"America/Manaus" 亚马逊标准时间 (马瑙斯)"America/St_Johns" 纽芬兰时间 (圣约翰)"America/Santiago" 圣地亚哥"America/Argentina/Buenos_Aires" 布宜诺斯艾利斯"America/Godthab" 戈特霍布"America/Montevideo" 乌拉圭时间 (蒙得维的亚)"America/Sao_Paulo" 圣保罗"Atlantic/South_Georgia" 南乔治亚"Atlantic/Azores" 亚述尔群岛"Atlantic/Cape_Verde" 佛得角"Africa/Casablanca" 卡萨布兰卡"Europe/London" 格林尼治标准时间 (伦敦)"Europe/Amsterdam" 中欧标准时间 (阿姆斯特丹)"Europe/Belgrade" 中欧标准时间 (贝尔格莱德)"Europe/Brussels" 中欧标准时间 (布鲁塞尔)"Europe/Sarajevo" 中欧标准时间 (萨拉热窝)"Africa/Brazzaville" 西部非洲标准时间 (布拉扎维)"Africa/Windhoek" 温得和克"Asia/Amman" 东欧标准时间 (安曼)"Europe/Athens" 东欧标准时间 (雅典)"Asia/Beirut" 东欧标准时间 (贝鲁特)"Africa/Cairo" 东欧标准时间 (开罗)"Europe/Helsinki" 东欧标准时间 (赫尔辛基)"Asia/Jerusalem" 以色列时间 (耶路撒冷)"Africa/Harare" 中部非洲标准时间 (哈拉雷)"Europe/Minsk" 明斯克"Asia/Baghdad" 巴格达"Europe/Moscow" 莫斯科"Asia/Kuwait" 科威特"Africa/Nairobi" 东部非洲标准时间 (内罗毕)"Asia/Tehran" 伊朗标准时间 (德黑兰)"Asia/Baku" 巴库"Asia/Tbilisi" 第比利斯"Asia/Yerevan" 埃里温"Asia/Dubai" 迪拜"Asia/Kabul" 阿富汗时间 (喀布尔)"Asia/Karachi" 卡拉奇"Asia/Oral" 乌拉尔"Asia/Yekaterinburg" 叶卡捷林堡"Asia/Calcutta" 加尔各答"Asia/Colombo" 科伦坡"Asia/Katmandu" 尼泊尔时间 (加德满都)"Asia/Almaty" 阿拉木图"Asia/Rangoon" 缅甸时间 (仰光)"Asia/Krasnoyarsk" 克拉斯诺亚尔斯克"Asia/Bangkok" 曼谷"Asia/Irkutsk" 伊尔库茨克时间 (伊尔库茨克)"Asia/Kuala_Lumpur" 吉隆坡"Australia/Perth" 佩思"Asia/Yakutsk" 雅库茨克时间 (雅库茨克)"Australia/Darwin" 达尔文"Australia/Brisbane" 布里斯班"Asia/Vladivostok" 海参崴时间 (符拉迪沃斯托克)"Pacific/Guam" 关岛"Australia/Adelaide" 阿德莱德"Australia/Hobart" 霍巴特"Australia/Sydney" 悉尼"Asia/Magadan" 马加丹时间 (马加丹)"Pacific/Auckland" 奥克兰"Pacific/Fiji" 斐济"Pacific/Tongatapu" 东加塔布
JDK新特性-LocalDateTime相关推荐
- Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)
Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...
- 【JavaSE】JDK新特性(二)————接口新特性,函数式接口(Suppier,Comsumer,Predicate,Function)
文章目录 1.接口新特性 1.1 接口组成更新概述 1.2 接口中的默认方法 1.3 接口中的静态方法 1.4 接口中的私有方法 2. 函数式接口 2.1 函数式接口概述 2.2 函数式接口作为方法的 ...
- Java JDK新特性探究-精简的JRE
java8有个很好的特性,即JEP161(http://openjdk.java.net/jeps/161 ),该特性定义了Java SE平台规范的一些子集,使java应用程序不需要整个JRE平台即可 ...
- Java8新特性LocalDateTime获取年,月,周,当年第X周
前言 基本上大家在JAVA中获取时间都是使用java.util.Date类或使用java.util.Calendar日历类,本篇博文主要给大家介绍Java8以后时间类java.time.LocalDa ...
- jdk新特性::作用
双冒号作用: jdk1.8中lambda 经常需要操作函数式接口表达式,表达式也是需要人写出来的,如果有现成的,那么久不需要写了,这里的双冒号其实就是对方法体的一种引用. 以下是Java 8中方法引用 ...
- jdk新特性(二)stream流
stream流 为什么需要stream流, 1.Stream流的引入可以使编程更加优雅,去除冗余代码,增加代码运行效率. 2.Stream流把真正的函数式编程风格引入到Java中. 案例 public ...
- day02_java基础加强(jdk新特性 javaa设计模式 反射)
1.Tcp协议发送数据 当使用tcp发送数据的时候 必须的有服务器端,当第一次执行客户端代码会报如下错误 java.net.ConnectException: Connection refused: ...
- oracle jdk1.7 内存,JDK 16 正式发布,一次性发布 17 个新特性…不服不行!
上一篇:Java 15 正式发布, 14 个新特性 JDK 16 正式发布 牛逼啊,JDK 15 刚发布半年(2020/09/15),JDK 16 又如期而至(2021/03/16),老铁们,跟上. ...
- JDK 16 正式发布,一次性发布 17 个新特性,不服不行
JDK 16 正式发布 牛逼啊,JDK 15 刚发布半年(2020/09/15),JDK 16 又如期而至(2021/03/16),老铁们,跟上. 来看下 Oracle Java 支持路线图: Ora ...
最新文章
- python解析json
- win7下安装redies
- 面向对象-多态的实现
- 硬盘 光驱 跳线问题
- (c语言)将一个数组逆序输出
- Linux下的web调度器——squid实现(负载均衡)
- centos下CMAKE源码安装MYSQL5.5.23
- 单元测试时使用Ninject的小问题
- Multi-class classification:One-vs-all
- php微信聊天机器人_使用图灵机器人api搭建微信聊天机器人php实现
- abb机器人指令手册_ABB机器人加速度设置
- 单路电压表c语言编程,基于ADC0809和AT89S52单片机的数字电压表的设计
- Java练习题2-基础(含解析)
- ajaxFileUpload上传文件
- 基于Python的geopandas库处理矢量几何的教程
- Python深度学习笔记04——tensorflow实现神经网络(壹)
- 使用NAudio音频文件剪切指定片段
- nRF Connect SDK(NCS)-Windows开发环境搭建
- PHP:执行 PHP 文件
- android+p手势操作,手势操作哪家强:Android P对比iPhone X