Java8 日期时间API

一、转换

1、与字符串

//LocalDateTime 转 字符串
String str = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
//字符串 转 LocalDateTime
 LocalDateTime localDateTime = LocalDateTime.parse("2019-06-26 19:00:00",
                                          DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

2、与Date

// Date 转 LocalDateTime 与 LocalDate
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
//也可以使用LocalDateTime的FactoryInput()方法使用系统的默认时区
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), zoneId);
2小时2分8秒

Process finished with exit code 0

注:严格间隔不足24小时的相差天数会得到0,如果不考虑具体的时分秒可转换为LocalDate类型再求值。

四、日期格式化

JDK8之前:SimpleDateFormat来进⾏格式化,但SimpleDateFormat并不是线程安全的
JDK8之后:引⼊线程安全的⽇期与时间DateTimeFormatter

LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String ldtStr = dtf.format(ldt);
System.out.println(ldtStr);

获取指定的⽇期时间对象

LocalDateTime ldt = LocalDateTime.of(2020, 11, 11, 8, 20, 30);
System.out.println(ldt);

五、常用API

public static void main(String[] args) throws InterruptedException {
        System.out.println("当前日期:");
        LocalDate currentDate = LocalDate.now();
        System.out.println(currentDate);
        System.out.println("----------------------------------");
        System.out.println("当前日期的周一与周日:");
        LocalDate monday = currentDate.with(DayOfWeek.MONDAY);
        LocalDate sunday = currentDate.with(DayOfWeek.SUNDAY);
        System.out.println(monday + " 与 " + sunday);
        System.out.println("----------------------------------");
        System.out.println("当天周日期:");
        String currentDayOfWeek = currentDate.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA);
        System.out.println(currentDayOfWeek);
        System.out.println(currentDate.getDayOfWeek().getValue());
        System.out.println("----------------------------------");
        System.out.println("当月第一天日期:");
        LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
        System.out.println(firstDayOfMonth);
        System.out.println("----------------------------------");
        System.out.println("当月最后一天日期:");
        LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println(lastDayOfMonth);
        System.out.println("----------------------------------");
        System.out.println("当月最后一天周日期:");
        String lastDayOfWeek = lastDayOfMonth.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA);
        System.out.println(lastDayOfWeek);
        System.out.println("----------------------------------");
        System.out.println("当前日期后天周日期(数字):");
        System.out.println(currentDate.plusDays(2).getDayOfWeek().getValue());
        System.out.println("----------------------------------");
        System.out.println("当天开始时间与结束时间:");
        System.out.println(LocalDate.now().atStartOfDay());
        System.out.println(LocalDate.now().atTime(LocalTime.MIN));
        System.out.println(LocalDate.now().atTime(LocalTime.MAX));
    }

Java8 日期时间API

注:
System.out.println(LocalDate.now().atTime(LocalTime.MIN));
System.out.println(LocalDate.now().atTime(LocalTime.MAX));
如果是LocalDateTime类型需使用下面API达到相同效果
LocalDateTime.now().with(LocalTime.MIN)
LocalDateTime.now().with(LocalTime.MAX);
//手动设置具体时分秒
LocalDateTime.of(LocalDate.now(),LocalTime.of(10,0,0));
或者:
LocalDate.now().atTime(LocalTime.of(10,0,0));

Original: https://www.cnblogs.com/better-farther-world2099/p/11912052.html
Author: 奕锋博客
Title: Java8 日期时间API

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/571748/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mybatis源码1JDBC->mybatis主要流程->mybatis Excutor简介

    === 一丶mybatis概述 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获…

    Java 2023年6月14日
    080
  • Sentinel vs Hystrix 限流对比,到底怎么选?

    Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。…

    Java 2023年5月29日
    090
  • simHash 简介以及 java 实现

    传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法。产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的;如果不相等,除了…

    Java 2023年5月29日
    087
  • C#利用反射实现两个类的对象之间相同属性的值的复制

    http://blog.csdn.net/u013093547/article/details/53584591 今天在拷贝对象的时候,看着代码实在是有点烦,一堆一样的代码,还是找…

    Java 2023年5月30日
    068
  • JVM-虚拟机栈

    运行时数据区-虚拟机栈 JAVA技术交流群:737698533 java虚拟机在执行java程序过程中会把它所管理的内存划分为若干个不同的区域,这些区域各有各的作用,根据java虚…

    Java 2023年6月6日
    072
  • Python3 字典浅析

    字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。 创建并打印字典: thisdict = { "brand": &quo…

    Java 2023年6月9日
    084
  • 微信小程序分享好友,朋友圈

    "share">发送给好友 本文来自博客园,作者:最帅爸爸,转载请注明原文链接:ht…

    Java 2023年6月15日
    089
  • 了解磁盘IO的那些事

    了解磁盘IO的那些事 我们作为一名开发,经常耳熟能详的一句话,就是提高程序的性能。对于一个应用程序存在问题的直观体现:页面打开很慢,需要等待。造成这样的问题的主要原因有以下几种:1…

    Java 2023年6月13日
    074
  • AOP spring boot 使用AOP面向切面编程

    关于AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充…

    Java 2023年6月5日
    083
  • Smack 3.3.1 发布,Java 的 XMPP 开发包

    Smack 3.3.1 发布了,这是一个小更新版本,主要更新包括: [SMACK-441] – Memory leak in KeepAliveManager [SMA…

    Java 2023年5月29日
    084
  • java内存模型(java memory model,JMM)与java虚拟机内存模型(java virtual machine)

    cpu从主存读写数据的速度远慢于cpu执行指令速度,故引入高速缓存,cpu执行指令后,将更新后的数据读写直接作用于多级缓存,缓存再与主存数据交换。 当多核cpu处理多线程任务时,可…

    Java 2023年6月8日
    076
  • 大白话之数据库事务

    本文摘自我的公众号: 陶朱公Boy。欢迎大家关注! 关注我: 上述文章摘自作者的公众号:陶朱公Boy 公众号内容包括:以下系列文章,欢迎大家关注。也欢迎大家加我微信(公众号有联系方…

    Java 2023年6月15日
    085
  • rabbitmq镜像模式设置策略以及高可用

    a、curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sud…

    Java 2023年5月30日
    095
  • 设置 java -jar 的进程显示名称

    我们经常会在Linux服务器上部署我们的java程序,总会使用 的命令在后台运行程序,这样运行后带来的问题就是,当我们想看相应的java进程时,使用jps命令,java进程只会显示…

    Java 2023年6月16日
    065
  • 十分钟实现发送邮件服务

    发送邮件应该是网站的必备拓展功能之一,注册验证、忘记密码或者是给用户发送营销信息。 一、邮件协议 在收发邮件的过程中,需要遵守相关的协议,其中主要有: SMTP全称为 Simple…

    Java 2023年6月5日
    0155
  • Spring-AOP学习笔记

    Spring 是轻量级的开源的 JavaEE 框架。 Spring有两个核心部分IOC 和 Aop IOC(Inversion of Control):控制反转,把创建对象过程交给…

    Java 2023年6月8日
    075
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球