首页 > 编程语言 >34_Java8 日期API

34_Java8 日期API

时间:2023-01-07 10:22:05浏览次数:51  
标签:格式化 format int 34 API static DateTimeFormatter LocalDateTime Java8

Java8 日期API

Date如果不格式化;输出的日期可读性差;而Java8 的时间类直接输出可读性好

Date存在线程安全问题;而Java8的时间类都是线程安全的

JDK8新增日期类:

​ LocalDate:年、月、日

​ LocalTime:时、分、秒

LocalDateTime:年、月、日、时、分、秒

​ Instant:代表的是时间戳

DateTimeFormatter:用于时间的格式化和解析

​ Duration:计算两个“时间”间隔

​ Period:计算两个“日期”间隔

LocalDateTime

1、获取LocalDateTime对象:

没有构造方法,常用下面两个静态方法获取时间:

​ public static LocalDateTime now()

​ 从默认时区中的系统时钟获取当前日期时间

​ public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)

​ 从年、月、日、小时、分钟、和秒获取LocalDateTime的实例,将纳秒设置为零

参考代码:

package com.ithiema;
import java.time.LocalDateTime;

/*
    public static LocalDateTime now()
			从默认时区中的系统时钟获取当前日期时间
	public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)
			从年、月、日、小时、分钟、和秒获取LocalDateTime的实例,将纳秒设置为零
 */
public class LocalDateTimeDemo01 {
    public static void main(String[] args){
        // public static LocalDateTime now()
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
        //2023-01-03T15:56:42.232014900
        /*
            T:表示时间开始,精确到纳秒
            1秒 = 1000毫秒
            1毫秒 = 1000微秒
            1微秒 = 1000纳秒
            1秒 = 1 * 10^9纳秒
         */

        //public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)
        LocalDateTime of = LocalDateTime.of(2023, 1, 3, 16, 1, 42);
        System.out.println(of);
        //2023-01-03T16:01:42 此处我们只精确到了秒
    }
}
2、LocalDateTime格式化和解析:

格式化:

​ String format(DateTimeFormatter format):使用指定的格式化程序格式化此日期时间

解析:

​ static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter):

​ 使用特定格式化程序从文本字符串中获取LocalDateTime的实例

DateTimeFormatter:没看到构造方法,用下面的静态方法获取日期格式化对象

​ public static DateTimeFormatter ofPattern(String pattern):使用指定的模式创建格式化程序

参考代码:

package com.ithiema;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/*
    格式化:
		String format(DateTimeFormatter format):使用指定的格式化程序格式化此日期时间

    解析:
		static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter):
				使用特定格式化程序从文本字符串中获取LocalDateTime的实例

    DateTimeFormatter:没看到构造方法,用下面的静态方法获取日期格式化对象
		public static DateTimeFormatter ofPattern(String pattern):使用指定的模式创建格式化程序
 */
public class LocalDateTimeDemo02 {
    public static void main(String[] args){
        //一、格式化
        /*//获取LocalDateTime对象
        //String format(DateTimeFormatter format)
        LocalDateTime now = LocalDateTime.now();

        //获取DateTimeFormatter对象
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format = now.format(dateTimeFormatter);

        System.out.println(format); //2023-01-03 16:21:35*/

        //使用链式编程进行改进
        //创建日期对象,调用其格式化方法,传入格式对象参数
        String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(format);

        //二、解析:注意格式是否一致
        //static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)
//        String s = "2023-01-03 16:21:35";
        String s = "2023/01/03 16:21:35";
//        LocalDateTime parse = LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime parse = LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
        System.out.println(parse);
    }
}

标签:格式化,format,int,34,API,static,DateTimeFormatter,LocalDateTime,Java8
From: https://www.cnblogs.com/fragmentary/p/17032189.html

相关文章

  • SPOJ SP34020 ADAPET - Ada and Pet
    链接难度:\(\texttt{13/19}\)\(T\)组数据。你需要构造一个字符串满足其中包含\(k\)个给定的字符串\(s\),输出该字符串的最短长度。数据范围:\(k\le10^6,\sum|s|\l......
  • Vue3 中的响应式api
    一、setup文件的认识 特点1:script中间的内容就是一个对象特点2:script在第一层定义的方法或者变量=>就是这个对象属性 =>顶层的绑定回被暴露给模板(模......
  • Kubernetes(k8s) kubectl api-versions常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......
  • Apipost——让前端、后端、测试共用同一份API文档
    作为软件开发从业者,API调试是必不可少的一项技能,在这方面Postman做的非常出色。但是在整个软件开发过程中,API调试只是其中的一部分,还有很多事情Postman无法完成,比如:AP......
  • Uni-App 提交 App应用 到 Google Play 提示 API 级别过低的解决办法
    原文链接:Uni-App提交App应用到GooglePlay提示API级别过低的解决办法发现问题近日准备发布新版本上架到GooglePlay上时,突然出现了Changeyourapp'starget......
  • Java8-Stream流式计算
    什么是Stream流式计算大数据:存储+计算集合、MySQL本质就是存储东西的;计算都应该交给流来操作!Stream是对集合功能的增强,它提供了各种非常便利、高效的聚合操作,可以大......
  • 中国竟然也有这种级别的API软件?万万没想到!
    前阵子,偶然发现一款国产API接口开发调试神器,上手尝鲜之后,真的有被惊艳到,功能齐全,对中文用户友好,简直不要太好用!所以,今天给大家安利一波。这个API接口开发调试神器叫Api......
  • 微服务(入门三):netcore ocelot api网关结合consul服务发现
    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接。 ocelot是基于netcore开发的开源API网关项目,功能强大,使用......
  • Docker Remote API未授权访问+docker逃逸导致Getshell漏洞复现
    漏洞介绍Docker是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署包......
  • Java8 函数式接口
    文章目录​​一、特点​​​​二、函数式接口中允许定义的方法类型​​​​三、四大内置函数式接口​​​​1.`Consumer`消费​​​​1.1示例​​​​2.`Supplier`供应......