java.text.SimpleDateFormat (日期)

news2025/1/16 11:21:54

前言:

小编最近让流感折磨的快嘎啦,

呜呜呜,拖更了俩天,

从明天开始我们继续日更!!!!

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

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

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

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


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

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

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



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

一、java.text.SimpleDateFormat 

官方语言:

  • java.text.SimpleDateFormat 类是 Java 标准库的一部分,用于以一种不依赖于具体语言环境的方式来格式化和解析日期。
  • 它允许用户通过指定日期和时间的模式来转换 Date 对象与符合该模式的字符串之间的转换。

构造方法:

  • SimpleDateFormat(): 使用默认的格式和语言环境创建一个新的 SimpleDateFormat 实例。
  • SimpleDateFormat(String pattern): 根据提供的日期时间模式创建一个新的 SimpleDateFormat 实例。

格式化:

  • public String format(Date date): 将一个 Date 对象按照实例化的模式转换为字符串形式。

解析:

  • public Date parse(String source): 将一个符合当前实例模式的字符串解析为一个 Date 对象。


大白话拆解:

  • 现在有一个特别的翻译机,这个机器可以将“日期”变成我们能看懂的文字(比如:2025年1月15日星期三),也可以把文字再变回日期的形式。在Java中,这个神奇的机器就是 SimpleDateFormat 类。
  • 如果你告诉这台机器一个特殊的规则(比如:"yyyy-MM-dd" 表示年-月-日),它就可以根据这个规则工作。
  • 当你想把一个日期转成特定格式的文本,就使用 .format() 方法。
  • 如果有一段描述日期的文字,并且你知道它的格式,就可以用 .parse() 方法把这个文字转回日期类型。

举个栗子:

1、格式化的例子

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // 创建一个SimpleDateFormat对象,指定格式
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 E");
        
        // 获取当前日期时间
        Date currentTime = new Date();
        
        // 将日期格式化为字符串
        String dateString = formatter.format(currentTime);
        
        // 输出格式化后的日期字符串
        System.out.println(dateString); // 输出类似于 "2025年01月15日 星期三"
    }
}

1.2代码解释和总结:

1、导入需要的包:

import java.text.SimpleDateFormat;
import java.util.Date;
  • 这两行代码告诉Java我们需要使用SimpleDateFormat和Date这两个类。
  • 它们就像是你做饭时需要的工具和材料一样重要。

2、创建一个SimpleDateFormat对象,指定格式:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 E");
  • 这里我们创建了一个叫做formatter的新工具(对象),这个工具专门用来把日期变成特定样子的文字。这里的"yyyy年MM月dd日 E"就是我们要的样式模板,比如“2025年01月15日 星期三”。

3、获取当前日期时间:

Date currentTime = new Date();
  • 使用之前创建的formatter工具,按照我们设定的格式("yyyy年MM月dd日 E"),将currentTime转换成文字形式,并存储在dateString变量中。

4、将日期格式化为字符串:

String dateString = formatter.format(currentTime);
  • 使用之前创建的formatter工具,按照我们设定的格式("yyyy年MM月dd日 E"),将currentTime转换成文字形式,并存储在dateString变量中。

5、输出格式化后的日期字符串

System.out.println(dateString); // 输出类似于 "2025年01月15日 星期三"
  • 最后,这行代码将格式化后的日期文本打印出来,显示在屏幕上,就像你在纸上写下今天的日期一样。

2、解析的例子:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        try {
            // 创建一个SimpleDateFormat对象,指定格式
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            
            // 字符串表示的日期
            String dateInString = "2025-01-15";
            
            // 将字符串解析为日期对象
            Date date = formatter.parse(dateInString);
            
            // 输出解析后的日期对象
            System.out.println(date); // 输出类似于 "Wed Jan 15 00:00:00 CST 2025"
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

2.2代码解释和总结:

1、导入需要的包

2、创建一个SimpleDateFormat对象,指定格式:

(这俩个和第一个例子差不多,咱们就不多说了)

3、字符串表示的日期

String dateInString = "2025-01-15";
  • 这是一个代表日期的字符串,形式为"2025-01-15",意味着2025年1月15日。你可以把它想象成一张写有日期的小纸条。

4、将字符串解析为日期对象

Date date = formatter.parse(dateInString);
  • 使用formatter这个工具,根据设定的模式("yyyy-MM-dd"),将字符串dateInString("2025-01-15")转换为一个Date对象,这样计算机就能识别并处理这个日期了。
  • 这就像是把小纸条上的日期信息输入到你的万能翻译机中,让它变成机器能够理解的日期形式。

5、输出解析后的日期对象

System.out.println(date); // 输出类似于 "Wed Jan 15 00:00:00 CST 2025"
  • 最后,这行代码将解析得到的Date对象打印出来,显示在屏幕上。
  • 由于Date对象的标准输出格式与我们输入的格式不同,所以你会看到类似"Wed Jan 15 00:00:00 CST 2025"这样的输出,包含了星期几、月份的英文缩写、具体的日期、具体的时间以及时区信息。

6、捕获可能发生的解析错误:

catch (ParseException e) {
    e.printStackTrace();
}
  • 如果提供的日期字符串不符合设定的格式(比如"yyyy-MM-dd"),就会发生错误。
  • 这部分代码是用来捕捉这种错误,并打印错误信息,帮助开发者了解哪里出了问题。
  • 这就像如果你给了翻译机一张无法读懂的纸条,它会告诉你“对不起,我读不懂这个”。

二、java.util.Calendar(日历)

官方语言

  • Date类的大部分API由于设计上的缺陷已经被标记为废弃(deprecated),推荐使用Calendar类来代替。
  • Calendar是一个抽象类,主要用于日期和时间字段的操作,比如获取、设置年月日时分秒等信息。通过调用Calendar.getInstance()方法可以获取一个Calendar对象的实例,该方法会根据当前的默认时区和语言环境初始化实例。

大白话拆解

  • 以前有一个旧的工具箱(Date类),里面有很多工具,但是这些工具很多都不太好用了,所以人们决定制作一个新的更好的工具箱(Calendar类)。
  • 这个新工具箱可以帮助我们更方便地操作时间,比如查看今天是哪一年、哪一月、星期几等等。
  • 要开始使用这个新的工具箱,你只需要说一声“给我一个工具箱”,然后它就会给你准备好一个装满各种工具的箱子(Calendar.getInstance()方法)。

举个栗子:

import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        // 获取Calendar的一个实例
        Calendar calendar = Calendar.getInstance();
        
        // 输出当前日期的一些基本信息
        System.out.println("年: " + calendar.get(Calendar.YEAR));
        System.out.println("月: " + (calendar.get(Calendar.MONTH) + 1)); // 注意:月份从0开始计数
        System.out.println("日: " + calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("星期几: " + calendar.get(Calendar.DAY_OF_WEEK)); // 星期天是第一天
    }
}

代码解释和总结:

1、导入需要的包(和前面一样,省略了吧)

2、获取Calendar的一个实例

Calendar calendar = Calendar.getInstance();
  • 这里我们通过调用Calendar.getInstance()方法获取了一个Calendar对象的实例,并命名为calendar。
  • 这就像是从我们的工具箱中拿出了一套完整的工具,准备开始工作。这套工具可以帮助我们查看和修改当前的日期和时间信息。

3、输出当前日期的一些基本信息:

年份:

System.out.println("年: " + calendar.get(Calendar.YEAR));

月份:

System.out.println("月: " + (calendar.get(Calendar.MONTH) + 1)); // 注意:月份从0开始计数

日:

System.out.println("日: " + calendar.get(Calendar.DAY_OF_MONTH));

星期几:

System.out.println("星期几: " + calendar.get(Calendar.DAY_OF_WEEK)); // 星期天是第一天



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



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2277509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏市场成果及趋势

2024 年的游戏行业发展情况如何?这是一个既关系到开发商,又关系到玩家的问题,而市场分析师可以为我们揭晓答案。下面,就让我们来看看分析师给出的结论以及他们对未来趋势的预测。 玩家 自 2021 年起,全球平均游戏时间…

Java版-oracle数据库连接测试工具-Maven配置JDBC

一、目标: 1)数据迁移方案,原RAC,新RAC 2)关闭原RAC环境,修改新RAC环境的IP=原RAC环境的IP,优点:所有的应用端不用修改数据库连接字符串。 3)测试工具目标: 3.1 Java程序,运行后cmd窗口, 3.2 链接原RAC数据库IP,每2秒查询并显示数据; 3.3 关闭/断掉原RAC服务器,…

微信小程序实现个人中心页面

文章目录 1. 官方文档教程2. 编写静态页面3. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/ 2. 编写静态页面 mine.wxml布局文件 <!--index.wxml--> <navigation-bar title"个人中心" ba…

数据结构-ArrayLIst-一起探索顺序表的底层实现

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 大家好&#xff0c;我们今天来学习java数据结构的第一章ArrayList&#xff08;顺序表&#xff09; 1.ArrayList的概念 那小伙伴就要问了线性表到…

Unity2017 控制.abc格式的三维动画播放

首先需要导入插件Alembic&#xff0c;否则导入abc动画&#xff0c;Unity是不会识别的。 Unity2017版本及以下直接从我这儿下载&#xff1a;https://download.csdn.net/download/qq_41603955/90272382 高版本Unity&#xff0c;请移步AssetStore商店搜找。 导入abc之后&#x…

docker虚拟机平台未启用问题

在终端中输入如下代码&#xff0c;重启电脑即可 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 对于Docker Desktop - Unexpected WSL error问题 参考链接 解决WSL2与docker冲突问题

软件设计大致步骤

由于近期在做软件架构设计&#xff0c;这里总结下大致的设计流程 软件设计流程 1 首先要先写系统架构图&#xff0c;将该功能在整个系统的位置以及和大致的内部模块划分 2 然后写内部的结构图&#xff0c;讲内部的各个子系统&#xff0c;模块&#xff0c;组件之间的关系和调用…

EasyLine(v2.0)自制光谱、曲线处理软件

前言&#xff1a;因为这次更新对软件的整体变动较大&#xff0c;所以就没有取版本v1.1&#xff0c;而是直接使用v2.0版本。然后上一版的讲解也不是很清楚&#xff0c;这次也做重点讲解一下。 自制光谱、曲线处理软件-EasyLine 软件的安装软件的使用总体介绍文件格式处理的使用 …

赛灵思(Xilinx)公司Artix-7系列FPGA

苦难从不值得歌颂&#xff0c;在苦难中萃取的坚韧才值得珍视&#xff1b; 痛苦同样不必美化&#xff0c;从痛苦中开掘出希望才是壮举。 没有人是绝对意义的主角&#xff0c; 但每个人又都是自己生活剧本里的英雄。滑雪&#xff0c;是姿态优雅的“贴地飞行”&#xff0c;也有着成…

晨辉面试抽签和评分管理系统之八:随机编排考生的面试批次(以教师资格考试面试为例)

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

LeetCode热题100(三十四) —— 23.合并K个升序链表

LeetCode热题100&#xff08;三十四&#xff09; —— 23.合并K个升序链表 题目描述代码实现思路一&#xff1a;选择排序(199ms)思路二&#xff1a;归并排序(2ms) 思路解析 你好&#xff0c;我是杨十一&#xff0c;一名热爱健身的程序员在Coding的征程中&#xff0c;不断探索与…

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法

ECMAScript 2024 引入了一个新的字符串实例方法&#xff1a;String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…

Springboot和Es整合

说明&#xff1a;本文章主要是简单整合和简单增删改查。 1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能

在城市的脉络中&#xff0c;地下管网犹如隐秘的动脉&#xff0c;支撑着现代生活的运转。而在这庞大网络的关键节点上&#xff0c;阀井扮演着不可或缺的角色。然而&#xff0c;由于其密闭性和复杂性&#xff0c;阀井内部一旦发生可燃气体泄漏&#xff0c;将对公共安全构成严重威…

C#中通道(Channels)的应用之(生产者-消费者模式)

一.生产者-消费者模式概述 生产者-消费者模式是一种经典的设计模式&#xff0c;它将数据的生成&#xff08;生产者&#xff09;和处理&#xff08;消费者&#xff09;分离到不同的模块或线程中。这种模式的核心在于一个共享的缓冲区&#xff0c;生产者将数据放入缓冲区&#x…

4.寻找两个正序数组的中位数--力扣

给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输出&#xff1a;2.00000 解释&…

2Spark Core

2Spark Core 1.RDD 详解1) 为什么要有 RDD?2) RDD 是什么?3) RDD 主要属性 2.RDD-API1) RDD 的创建方式2) RDD 的算子分类3) Transformation 转换算子4) Action 动作算子 3. RDD 的持久化/缓存4. RDD 容错机制 Checkpoint5. RDD 依赖关系1) 宽窄依赖2) 为什么要设计宽窄依赖 …

面试题刷题

i 或 i 基础几个9&#xff08;评价系统的指标&#xff09; Arrays.aslist 的bug 方法做了重写 这样就能使用了 list的迭代器 不能使用list.remove方法。需要使用迭代器的remove方法 正确操作 Hashcode hashcode是object对象的方法 是一个native方法 hashcode冲突案例和hashcod…

编译pytorch——cuda-toolkit-nvcc

链接 https://blog.csdn.net/wjinjie/article/details/108997692https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#switching-between-driver-module-flavorshttps://forums.developer.nvidia.com/t/can-not-load-nvidia-drivers-on-ubuntu-22-10/239750https://…

Linux网络_套接字_UDP网络_TCP网络

一.UDP网络 1.socket()创建套接字 #include<sys/socket.h> int socket(int domain, int type, int protocol);domain (地址族): AF_INET网络 AF_UNIX本地 AF_INET&#xff1a;IPv4 地址族&#xff0c;适用于 IPv4 协议。用于网络通信AF_INET6&#xff1a;IPv6 地址族&a…