首页 > 其他分享 >日期时间格式化:DateTimeFormatter (全面总结和详细拆解)

日期时间格式化:DateTimeFormatter (全面总结和详细拆解)

时间:2025-01-18 11:59:30浏览次数:3  
标签:Instant System println 拆解 时间 DateTimeFormatter oneHourLater 格式化 now

前言:

小编吃了点药药,

终于流感要好啦(嘻嘻)

我们继续日更吧!!!

我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,

把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,

为什么用这串代码关键字,对比同类型的代码,

让大家真正看完以后融会贯通,举一反三,实践应用!!!!


①官方定义  和  大白话拆解对比

②举生活中常见贴合例子、图解辅助理解的形式

③对代码实例中关键部分进行详细拆解、总结



给小编一个赞或者关注吧,我们一起进步!!

官方语言:

  • java.time.Instant 类表示时间线上的一个瞬时点,它通常用来记录事件发生的时间戳。
  • 这个类提供了对时间的一种绝对表示方法,不依赖于任何时区或夏令时规则。
  • 它的值是自2025年1月17日00:00:00(UTC)以来的秒数和纳秒数。Instant 类可以用于需要高精度时间戳的场景,比如记录日志、数据库事务时间等。

大白话拆解:

  • 现在有一个永远不会停下来的计时器,从很久以前的一个固定时刻开始计时——那就是2025年1月17日午夜(UTC时间)。
  • 每当有事情发生时,你可以看看这个计时器显示的数字,这就是那个事情发生的“时间戳”。无论你在世界的哪个角落,这个计时器都以相同的方式计时,所以它可以精确地告诉你事情是在什么时候发生的。
  • 在Java中,我们使用Instant来表示这样的时间点。

举个栗子:

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // 获取当前时间的Instant对象
        Instant now = Instant.now();
        System.out.println("当前时间戳: " + now);

        // 创建一个指定秒数和纳秒数的Instant对象
        Instant specificInstant = Instant.ofEpochSecond(1609459200); // 2021-01-01T00:00:00Z
        System.out.println("特定时间戳: " + specificInstant);

        // 添加1小时到当前时间戳
        Instant oneHourLater = now.plusSeconds(3600);
        System.out.println("1小时后的时间戳: " + oneHourLater);

        // 比较两个Instant对象
        if (oneHourLater.isAfter(now)) {
            System.out.println("oneHourLater 发生在 now 之后");
        } else if (oneHourLater.isBefore(now)) {
            System.out.println("oneHourLater 发生在 now 之前");
        } else {
            System.out.println("oneHourLater 和 now 是同一时间");
        }
    }
}

代码解释和总结:

1、获取当前时间的Instant对象

Instant now = Instant.now();
System.out.println("当前时间戳: " + now);
  • 解释: 这段代码获取了当前的时间,并将其存储在一个名为now的变量中。这个时间是以一种叫做“时间戳”的形式表示的,它是一种记录具体时刻的方法。然后,这段代码会打印出这个时间戳。

2、创建一个指定秒数和纳秒数的Instant对象

Instant specificInstant = Instant.ofEpochSecond(1609459200); // 2021-01-01T00:00:00Z
System.out.println("特定时间戳: " + specificInstant);
  • 解释: 这里我们创建了一个特定时间的Instant对象,它代表的是2021年1月1日午夜(00:00)这一刻。这个时间也是以时间戳的形式表示的,这里的数字1609459200就是那个时间点的时间戳。接着,这段代码也会打印出这个特定的时间戳。

3、添加1小时到当前时间戳

Instant oneHourLater = now.plusSeconds(3600);
System.out.println("1小时后的时间戳: " + oneHourLater);
  • 解释: 这里我们将当前时间(即now变量所表示的时间)向后推移了1个小时(1小时等于3600秒),并把这个新的时间存入了一个名为oneHourLater的变量中。然后,打印出这个新时间的时间戳。

4、比较两个Instant对象

if (oneHourLater.isAfter(now)) {
    System.out.println("oneHourLater 发生在 now 之后");
} else if (oneHourLater.isBefore(now)) {
    System.out.println("oneHourLater 发生在 now 之前");
} else {
    System.out.println("oneHourLater 和 now 是同一时间");
}
  • 解释: 这一部分代码是在比较两个时间(oneHourLater和now)。通过调用isAfter()方法来检查oneHourLater是否晚于now;如果oneHourLater确实比now晚,那么就会打印出“oneHourLater 发生在 now 之后”。同样地,如果oneHourLater早于now,则打印“oneHourLater 发生在 now 之前”。如果两者是同一个时间,则打印“oneHourLater 和 now 是同一时间”。

1. ofPattern(String pattern)


官方语言:

  • DateTimeFormatter.ofPattern(String pattern):这是一个静态方法,返回一个指定字符串格式的DateTimeFormatter对象。
  • 这个格式化器可以根据给定的模式字符串来解析和格式化日期时间。

大白话拆解:

  • ofPattern(String pattern):这个方法根据你提供的模式字符串创建一个格式化器。你可以用这个格式化器来把日期时间转换成字符串,或者反过来把字符串转换成日期时间。


2. format(TemporalAccessor t)


官方语言解释:

  • format(TemporalAccessor t):使用当前的DateTimeFormatter格式化一个日期、时间或日期时间,并返回一个字符串表示。


大白话拆解:

  • format(TemporalAccessor t):这个方法可以把一个日期、时间或日期时间对象按照你之前设置的格式转换成字符串。


3. parse(CharSequence text)


官方语言解释:

  • parse(CharSequence text):将指定格式的字符序列解析为一个日期、时间或日期时间对象。


大白话拆解:

  • parse(CharSequence text):这个方法可以把符合特定格式的字符串转换成日期、时间或日期时间对象。

举个栗子

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        // 创建日期时间对象
        LocalDate date = LocalDate.now();
        LocalDateTime dateTime = LocalDateTime.now();

        // 创建一个格式化器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 格式化日期时间
        String formattedDate = date.format(formatter);
        String formattedDateTime = dateTime.format(formatter);

        System.out.println("格式化后的日期: " + formattedDate);
        System.out.println("格式化后的日期时间: " + formattedDateTime);

        // 解析日期时间
        LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);
        System.out.println("解析后的日期时间: " + parsedDateTime);
    }
}

创建日期时间对象

LocalDate date = LocalDate.now();
LocalDateTime dateTime = LocalDateTime.now();

创建一个格式化器

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

格式化日期时间

String formattedDate = date.format(formatter);
String formattedDateTime = dateTime.format(formatter);

输出格式化后的日期时间

System.out.println("格式化后的日期: " + formattedDate);
System.out.println("格式化后的日期时间: " + formattedDateTime);

解析日期时间:

LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);

输出解析后的日期时间:

System.out.println("解析后的日期时间: " + parsedDateTime);



我们今天就到这里,下次见吧!!!



标签:Instant,System,println,拆解,时间,DateTimeFormatter,oneHourLater,格式化,now
From: https://blog.csdn.net/2401_86356924/article/details/145212801

相关文章

  • 前端TS 时间格式化函数
    /***时间日期转换*@paramdate当前时间,newDate()格式*@paramformat需要转换的时间格式字符串*@returns返回拼接后的时间字符串*/exportfunctionformatDate(date:Date,format:string):string{constweek:{[key:string]:string}={'0'......
  • 不会“拆解爆款”,每天刷“25个小时”也不会有网感~~~
    50条爆款视频拆解表:每一步都帮你打造流量密码!痛点:内容做了无数,却总是“流量扑街”?剪辑尽力了,可播放量依旧低迷? 情绪:不要再迷茫了!爆款视频不是靠运气,而是拆解每一个细节,步步优化! 解决方案:本表从 内容、形式、技术、传播策略、后续运营 五大维度,提供50条详细拆解,助力你打......
  • 写一个格式化金额的方法
    在前端开发中,格式化金额通常意味着将数字金额转换为易于阅读的字符串形式,例如添加千位分隔符、保留特定数量的小数位等。以下是一个使用JavaScript编写的简单方法,用于格式化金额:functionformatMoney(amount,decimalPlaces=2,decimalSeparator='.',thousandSeparator=',......
  • C#格式化输出
    上两期:C#格式化输出-CSDN博客C#格式化输出-CSDN博客Console.WriteLine和Console.WriteConsole.WriteLine和Console.Write是两个用于向控制台输出信息的方法,它们都属于System.Console类。尽管这两个方法的功能相似,但它们之间存在一些关键的区别,这些区别影响了它们的使......
  • 【IPQ5018】IPQ5018 5G 获取支持信道列表并格式化输出字符串
     IPQ5018    IPQ5018isahighlyintegrated802.11axWi-Fi/Bluetooth5.2system-on-chip(SoC)designedandbuiltforhigh-performance,powerefficient,andcost-effectivewirelessnetworkingapplicationsincludinghomerouters,meshnodes,andgate......
  • 视觉格式化模型 - 定位
    定位视觉格式化模型,大体上将页面中盒子的排列分为三种方式:常规流浮动:float定位:position定位:手动控制元素在包含块中的精准位置涉及的CSS属性:positionposition属性默认值:static,静态定位(不定位)relative:相对定位absolute:绝对定位fixed:固定定位一个元素,只要position的......
  • 总结并拆解所有新手常用的——String API(二)(字符串)
    前言:String类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写.......小编这次就比较全面系统的带大家总结清楚几乎所有string常用的API,并且带大家拆解清楚,能够灵活使用!!!小编最近熬夜牙疼的......
  • C++ 格式化输出 printf
    格式化输出的目的是先组织好格式,然后把变量替换进去。格式化说明格式化输出必会表保留指定位的小数在输出小数的时候,经常需要指定保留几位小数。比如保留2位小数要用%.2f,保留3位小数要用%.3f,依此类推。doublepi=3.1415926;printf("pi=%.3f",pi);补0输出补0输出常见......
  • python format格式化数字
    文章目录一、format数字格式化语法1.1、语法格式1.2、参数格式二、基本用法2.1、进制转换2.2、百分比、千分位2.3、精度、保留小数位2.4、填充与对齐本文主要讲解python中format函数如何格式化数字,如千分位、百分比、保留指定小数位、进制转换等等。本文只讲解form......
  • 硬件拆解-PWM转电压变送器
    硬件拆解-PWM转电压变送器电源24V输出电平电源25%-75%......