菜鸟教程

一、写代码经常用到时间格式化,时间相加减(想知道前一天和后一天,等等),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相关推荐

  1. Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)

    Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...

  2. 【JavaSE】JDK新特性(二)————接口新特性,函数式接口(Suppier,Comsumer,Predicate,Function)

    文章目录 1.接口新特性 1.1 接口组成更新概述 1.2 接口中的默认方法 1.3 接口中的静态方法 1.4 接口中的私有方法 2. 函数式接口 2.1 函数式接口概述 2.2 函数式接口作为方法的 ...

  3. Java JDK新特性探究-精简的JRE

    java8有个很好的特性,即JEP161(http://openjdk.java.net/jeps/161 ),该特性定义了Java SE平台规范的一些子集,使java应用程序不需要整个JRE平台即可 ...

  4. Java8新特性LocalDateTime获取年,月,周,当年第X周

    前言 基本上大家在JAVA中获取时间都是使用java.util.Date类或使用java.util.Calendar日历类,本篇博文主要给大家介绍Java8以后时间类java.time.LocalDa ...

  5. jdk新特性::作用

    双冒号作用: jdk1.8中lambda 经常需要操作函数式接口表达式,表达式也是需要人写出来的,如果有现成的,那么久不需要写了,这里的双冒号其实就是对方法体的一种引用. 以下是Java 8中方法引用 ...

  6. jdk新特性(二)stream流

    stream流 为什么需要stream流, 1.Stream流的引入可以使编程更加优雅,去除冗余代码,增加代码运行效率. 2.Stream流把真正的函数式编程风格引入到Java中. 案例 public ...

  7. day02_java基础加强(jdk新特性 javaa设计模式 反射)

    1.Tcp协议发送数据 当使用tcp发送数据的时候 必须的有服务器端,当第一次执行客户端代码会报如下错误 java.net.ConnectException: Connection refused: ...

  8. oracle jdk1.7 内存,JDK 16 正式发布,一次性发布 17 个新特性…不服不行!

    上一篇:Java 15 正式发布, 14 个新特性 JDK 16 正式发布 牛逼啊,JDK 15 刚发布半年(2020/09/15),JDK 16 又如期而至(2021/03/16),老铁们,跟上. ...

  9. JDK 16 正式发布,一次性发布 17 个新特性,不服不行

    JDK 16 正式发布 牛逼啊,JDK 15 刚发布半年(2020/09/15),JDK 16 又如期而至(2021/03/16),老铁们,跟上. 来看下 Oracle Java 支持路线图: Ora ...

最新文章

  1. python解析json
  2. win7下安装redies
  3. 面向对象-多态的实现
  4. 硬盘 光驱 跳线问题
  5. (c语言)将一个数组逆序输出
  6. Linux下的web调度器——squid实现(负载均衡)
  7. centos下CMAKE源码安装MYSQL5.5.23
  8. 单元测试时使用Ninject的小问题
  9. Multi-class classification:One-vs-all
  10. php微信聊天机器人_使用图灵机器人api搭建微信聊天机器人php实现
  11. abb机器人指令手册_ABB机器人加速度设置
  12. 单路电压表c语言编程,基于ADC0809和AT89S52单片机的数字电压表的设计
  13. Java练习题2-基础(含解析)
  14. ajaxFileUpload上传文件
  15. 基于Python的geopandas库处理矢量几何的教程
  16. Python深度学习笔记04——tensorflow实现神经网络(壹)
  17. 使用NAudio音频文件剪切指定片段
  18. nRF Connect SDK(NCS)-Windows开发环境搭建
  19. PHP:执行 PHP 文件
  20. android+p手势操作,手势操作哪家强:Android P对比iPhone X

热门文章

  1. 湖北省最新测绘资质审批拟批准结果已公示,看看有没有你们公司
  2. 我为什么要离开传智再去创业?
  3. 基于单片机的多功能电子密码锁系统设计
  4. openlayers3 ol3热力图 json
  5. Linksys WRT路由器刷入OpenWrt与原厂固件双固件及切换
  6. 固态硬盘坏了 安装到里面的软件无法卸载也无法安装
  7. 安卓4.4和6.0系统wifi开关设置
  8. Lifeline功能介绍04——个人课程的查看及管理
  9. 三年程序员生涯的感悟、总结和憧憬
  10. html仿360首页动画效果图,仿360影视网站模板html源码