来源

占小狼发布的一篇博客

Date

Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。

LocalDate

  1. Instant 瞬时实例。
  2. LocalDate:本地日期,不包含具体时间 例如:2014-01-14 可以用来记录生日、纪念日、加盟日等。
  3. LocalTime:本地时间,不包含日期。
  4. LocalDateTime:组合了日期和时间,但不包含时差和时区信息。
  5. ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。

新API还引入了 ZoneOffSet 和 ZoneId 类,使得解决时区问题更为简便。解析、格式化时间的 DateTimeFormatter 类也全部重新设计。

package com.test;import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
/*** @author xxx* @date 2020/6/5 16:43* @desc ...  copy*/
public class T {//DATE --> LocalDatepublic static LocalDate date2LocalDate(Date date) {return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();}// LocalDate  --> DATEpublic static Date localDate2Date(LocalDate localDate) {if(null == localDate) {return null;}ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());return Date.from(zonedDateTime.toInstant());}// localDateTime  --> DATEpublic static Date localDateTime2Date(LocalDateTime localDateTime) {return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());}//DATE --> Stringpublic static String formatDate(Date date) {LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();return localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));}//LocalDateTime 转 Long
localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli())
//Long转 LocalDateTime
LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault()).toLocalDate());//获取今天的日期public void getCurrentDate(){LocalDate today = LocalDate.now();System.out.println("Today's Local date : " + today);}//获取年、月、日信息public void getDetailDate(){LocalDate today = LocalDate.now();int year = today.getYear();int month = today.getMonthValue();int day = today.getDayOfMonth();System.out.printf("Year : %d  Month : %d  day : %d t %n", year, month, day);}//处理特定日期public void handleSpecilDate(){LocalDate dateOfBirth = LocalDate.of(2018, 01, 21);System.out.println("The specil date is : " + dateOfBirth);}//获取当前时间public void getCurrentTime(){LocalTime time = LocalTime.now();System.out.println("local time now : " + time);}// LocalTime  加减时间public void plusHours(){LocalTime time = LocalTime.now();LocalTime newTime = time.plusHours(2); // 增加两小时System.out.println("Time after 2 hours : " +  newTime);LocalTime time1 = time.minusHours(2);  //减少两小时System.out.println("Time after 2 hours : " +  time1);}//LocalDate  加减时间public void nextWeek(){LocalDate today = LocalDate.now();//加一周LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);//减一个月LocalDate nextWeek = today.minus(1, ChronoUnit.DAYS;System.out.println("Today is : " + today);System.out.println("Date after 1 week : " + nextWeek);}public void clock(){// 根据系统时间返回当前时间并设置为UTC。Clock clock = Clock.systemUTC();System.out.println("Clock : " + clock);// 根据系统时钟区域返回时间Clock defaultClock = Clock.systemDefaultZone();System.out.println("Clock : " + clock);}//时区处理public void getZoneTime(){//设置时区ZoneId america = ZoneId.of("America/New_York");LocalDateTime localtDateAndTime = LocalDateTime.now();ZonedDateTime dateAndTimeInNewYork  = ZonedDateTime.of(localtDateAndTime, america );System.out.println("现在的日期和时间在特定的时区 : " + dateAndTimeInNewYork);}//检查闰年public void isLeapYear(){LocalDate today = LocalDate.now();if(today.isLeapYear()){System.out.println("This year is Leap year");}else {System.out.println("2018 is not a Leap year");}}//计算两个日期之间的天数和月数public void calcDateDays(){LocalDate today = LocalDate.now();LocalDate java8Release = LocalDate.of(2018, Month.MAY, 14);Period periodToNextJavaRelease = Period.between(today, java8Release);System.out.println("Months left between today and Java 8 release : "+ periodToNextJavaRelease.getMonths() );}// 包含时差信息的日期和时间public void ZoneOffset(){LocalDateTime datetime = LocalDateTime.of(2018, Month.FEBRUARY, 14, 19, 30);ZoneOffset offset = ZoneOffset.of("+05:30");OffsetDateTime date = OffsetDateTime.of(datetime, offset);System.out.println("Date and Time with timezone offset in Java : " + date);}// 获取时间戳public void getTimestamp(){Instant timestamp = Instant.now();System.out.println("What is value of this instant " + timestamp);}// 使用预定义的格式化工具去解析或格式化日期public void formateDate(){String dayAfterTommorrow = "20180210";LocalDate formatted = LocalDate.parse(dayAfterTommorrow, DateTimeFormatter.BASIC_ISO_DATE);System.out.printf("Date generated from String %s is %s %n", dayAfterTommorrow, formatted);}
}

获取当月第一天

LocalDate first= LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());

获取当月最后一天

 LocalDate with = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());

获取某天0点0分0秒 ->Long(LocalDate,LocalDateTime)

//LongLocalDate date1 = LocalDate.now();long s= date1.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli() //LocalDateLocalDate.now().atStartOfDay(ZoneId.systemDefault()).toLocalDate();//LocalDateTime LocalDateTime qws = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);

获取某天23点59分59秒 ->Long(LocalDate,LocalDateTime)

 LocalDateTime dsdf = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);

String yyyy-MM 转 LocalDate

  DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM");YearMonth ym = YearMonth.parse("2020-09", fmt);LocalDate date = ym.atEndOfMonth();//月末LocalDate date1 = ym.atDay(0);//月初

LocalDate 转 String yyyy-MM

 DateTimeFormatter DATE_DTF = DateTimeFormatter.ofPattern("yyyy-MM");String statisticDate = LocalDate.now().format(DATE_DTF);

LocalDate笔记相关推荐

  1. JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记

    JAVA8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁! LocalDate.LocalTime.LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进 ...

  2. Java 8 实战学习笔记

    Java 8 实战学习笔记 @(JAVASE)[java8, 实战, lambda] 文章目录 Java 8 实战学习笔记 参考内容 Lambda表达式 Lambda环绕执行模式(抽离步骤) 原始代码 ...

  3. Java开发笔记(五十六)利用枚举类型实现高级常量

    前面介绍了联合利用final和static可实现常量的定义,该方式用于简单的常量倒还凑合,要是用于复杂的.安全性高的常量,那就力不从心了.例如以下几种情况,final结合static的方式便缺乏应对之 ...

  4. Java 基础 第3阶段:高级应用——尚硅谷学习笔记(含面试题) 2023年

    Java 基础 第 3 阶段:高级应用--尚硅谷学习笔记(含面试题) 2023 年 Java 基础 第 3 阶段:高级应用--尚硅谷学习笔记(含面试题) 2023 年 第 9 章 异常处理 9.1 异 ...

  5. 《Java核心技术》学习笔记——第8章 泛型程序设计

    版权声明:本文为博主ExcelMann的原创文章,未经博主允许不得转载. 第8章 泛型程序设计 作者:ExcelMann,转载需注明. 第8章内容目录: 为什么要使用泛型程序设计 定义简单泛型类 泛型 ...

  6. 瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接

    本项目是基于自学b站中 黑马程序员 的瑞吉外卖项目:视频链接: 黑马程序员Java项目实战<瑞吉外卖>,轻松掌握springboot + mybatis plus开发核心技术的真java实 ...

  7. 《Java 8 实战》学习笔记

    Java 8 学习笔记 整理自<Java8实战>一书 断断续续半年没有更新了,每次只能写一点然后保存为草稿.因为一直在忙着写毕业论文,过几个月又要上班了,所以趁着这几个月多更新一点基础,等 ...

  8. [记录学习]自学动力节点老杜Spring6笔记_01

    首先感谢动力节点和杜老师的教学分享!Respect! 学习来源:B站 https://www.bilibili.com/video/BV1Ft4y1g7Fb/?spm_id_from=333.337. ...

  9. [读书笔记]Core Java: Volume I - Fundamentals Chapter 8

    Title: Core Java - Volume I Fundamentals Edition: Eleventh Edition Author: Cay S. Horstmann 读书笔记:对原书 ...

最新文章

  1. 基于多准则决策分析的多因素降维方法检测基因基因相互作用 Multi-factor dimensionality reduction method based on multi-criteria dec
  2. 因为返回有true ajax提示进入错误,jquery ajax中error返回错误解决办法
  3. 从人人网抓取高校数据信息,包括,省份 - 高校 - 院系 (提供最终SQL文件下载)...
  4. Tomcat与Gzip与缓存
  5. u8系统怎么连接服务器,用友U8 怎么连接远程服务器
  6. mysql中关于group的语句指令_mysql不支持group by的解决方法小结
  7. visual studio code(vs code) 编译、运行、调试程序(调用g++)
  8. 国内搜索大哥iOS面试题
  9. 英语字帖电子版可打印_一年级英语字母专项练习:含26个英文字母书写教学 可下载电子版...
  10. Android影院选座
  11. 2022年学习数据科学的18个网站
  12. 鸿蒙能用谷歌地图,华为鸿蒙更进一步,牵手世界级应用,谷歌GMS或彻底再见
  13. 服务器上修改websphere变量,WebSphere常用设置
  14. Jenkins:This is especially strange since your build otherwise succeeded.及不是内外部指令问题
  15. 慧荣SM2262EN跑RDT教程
  16. 呆萌却实际可怕的动物:蛇鹫会踢腿 大熊猫攻击凶猛
  17. 在线TSV转纯文本工具
  18. sqldatasource oracle,asp.net – ORA-01036:非法变量名/号C#(SqlDataSource)Oracle 11g
  19. ID/cpu/MI卡、非接触式读卡器资料集合
  20. python透视变换原理_python cv2中的透视变换

热门文章

  1. VS2015主题设置
  2. Linux挖矿病毒清理流程
  3. mac如何取消root密码,macos的root密码
  4. 硅谷来信精华内容分享
  5. 《HTML+CSS+JavaScript》之第14章 文本样式
  6. 学习css calc() 动态算法
  7. 华一汽车智能中控大屏
  8. 旅游规划(Dijkstra算法)
  9. 解决“ImportError: No module named win32con”“ImportError: No module named six”
  10. 用xlrd根据lvef数据分组ECG文件