Java中SimpleDateFormat时YYYY与yyyy以及HH和hh的区别注意踩坑

news2024/11/15 23:54:57

场景

Java开发手册中为什么要求SimpleDateFormat时用y表示年,而不能用Y:

Java开发手册中为什么要求SimpleDateFormat时用y表示年,而不能用Y_simpledateformat 怎么确定y就是年-CSDN博客

在使用SimpleDateFormat在获取当前日期时因使用了YYYY导致20231231这个日期被格式化为20241231

这里推荐在日期处理时统一使用封装工具类并指定格式化格式,避免在业务代码中失误写错。

在Java中的SimpleDateFormat类中格式化日期时,YYYY和yyyy之期存在细微的差异。

它们都代表一年,但是yyyy代表日历年份,而YYYY代表星期,基于周的年份。

这是一个细微的差异,通常情况下,两者的结果是相同的,但在跨年的第一周或最后一周可能会有差异。

y:year,表示“年”,基于天的年

Y:week year ,表示“周年”,基于周的年

注:

博客:
霸道流氓气质-CSDN博客

实现

1、比如执行如下代码

        String date="2023-12-31";
        SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
        Date d = dt.parse(date);
        SimpleDateFormat dateFormatY = new SimpleDateFormat("YYYY-MM-dd");
        SimpleDateFormat dateFormaty = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(dateFormatY.format(d));//2024-12-31
        System.out.println(dateFormaty.format(d));//2023-12-31

一个会是2024,一个会是2023

这是因为20231231在周年计算方式中为2024年的第一个周的开始(周末为一周的开始)

2、为了验证,再找2024年的跨年时间进行验证

        date="2024-12-29";
        Date d3 = dt.parse(date);
        System.out.println(dateFormatY.format(d3));//2025-12-29
        System.out.println(dateFormaty.format(d3));//2024-12-29

        date="2024-12-28";
        Date d4 = dt.parse(date);
        System.out.println(dateFormatY.format(d4));//2024-12-28
        System.out.println(dateFormaty.format(d4));//2024-12-28

这是因为24年的1228为24年的最后一周,而241229为25年的第一个周。

3、同理在使用HH与hh时也要注意区别

HH代表24小时制

hh代表12小时制

        SimpleDateFormat dateFormatH = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat dateFormath = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(dateFormatH.format(new Date()));//当前时间为上午 2024-01-25 11:33:24 当前时间为下午 2024-01-25 16:34:24
        System.out.println(dateFormath.format(new Date()));//当前时间为上午 2024-01-25 11:33:24 当前时间为下午 2024-01-25 04:34:24

可通过修改当前时间为上午还是下午进行验证。

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

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

相关文章

【DDD】学习笔记-软件开发团队的沟通与协作

领域驱动设计的核心是“领域”,因此要运用领域驱动设计,从一开始就要让团队走到正确的点儿上。当我们组建好了团队之后,应该从哪里开始?不是 UI 原型设计、不是架构设计、也不是设计数据库,这些事情虽然重要但却非最高…

STM32F1之RTC实时时钟(Unix时间戳)

目录 1. Unix时间戳 2. UTC/GMT 3. 时间戳转换 3.1 time_t 3.2 struct tm 3.3 char * 3.4 时间戳的使用 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置…

leetcode hot100 组合总和Ⅲ

本题中,要求我们求在1-9范围内,满足k个数的和为n的组合(组合是无序的,并且题目中要求不可以重复)。 这种组合问题依旧需要用回溯算法来解决。因为我们没办法控制产生k层for循环。回溯算法的过程是构建树结构&#xff…

巴厘行记(二)——乌布之夜

欢迎览阅《巴厘行记》系列文章 巴厘行记巴厘行记(一)——海神庙 巴厘行记(二)——乌布之夜 巴厘行记(三)——Auntie和Mudi 巴厘行记(四)——乌布漫游 巴厘行记(五&a…

【学网攻】 第(10)节 -- 路由器单臂路由配置

系列文章目录 目录 系列文章目录 文章目录 前言 一、单臂路由是什么? 二、实验 1.引入 实验拓扑图 PC配置 Sw配置 Router配置 实验验证 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交…

Qt使用中文字符串乱码的问题

文章目录 vs编译器下第一种解决方式第二种解决方式 Qt编译器下 我们在使用qt的时候有时候会遇到打印中文字符串的时候出现中文乱码的问题,主要是由于Qt的QString字符串存储的方式是使用utf-8的编码方式,如果我们本地的文件是使用GBK方式的编码再使用中文…

Spring: alibaba代码规范校验工具checkstyle

文章目录 一、idea配置checkstyle插件二、激活CheckStyle三、配置自动格式化功能四、使用代码格式化 一、idea配置checkstyle插件 下载 Intellij IDEA Checkstyle 插件:File -> setting -> plugin通过关键字CheckStyle-IDEA搜索并安装。 安裝完成后重启idea…

wsl下安装ros2问题: Unable to locate package ros-humble-desktop 解决方案

❗ 问题 在wsl(Ubuntu 22.04版本)下安装ros的过程中,在执行命令 $ sudo apt install ros-humble-desktop一直弹出报错:Unable to locate package ros-humble-desktop 前面设置编码和添加源的过程中一直没有出现其他问题&#…

使用Docker部署MySQL并结合内网穿透实现远程访问本地数据库

文章目录 前言1 .安装Docker2. 使用Docker拉取MySQL镜像3. 创建并启动MySQL容器4. 本地连接测试4.1 安装MySQL图形化界面工具4.2 使用MySQL Workbench连接测试 5. 公网远程访问本地MySQL5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主…

【第五天】蓝桥杯备战

1、金币 https://www.lanqiao.cn/problems/357/learning/ 解法:暴力 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入…

Oracle分栏(非分页)查询

不知道Oracle怎么进行数据分栏(分栏: 因数据列过长, 部分数据作为新列显示). 在这里先记录一下粗浅的查询方法. 数据源例子: select 日用百货 as cat, 手电筒 as name, 20 as amount, 2024-01-27 as dt from dualunion allselect 餐饮美食 as cat, 鸡公煲 as name, 15.9 as amo…

79 C++对象模型探索。数据语义学 - 进程内存空间布局分析

不同的数据在内存中会有不同的保存时机,和保存位置,这一节就分析这个。 当运行一个可执行文件时候,操作系统就会把这个可执行文件加载到内存;此时进程有一个虚拟的地址空间(内存空间),如下图&a…

什么是SQL,什么是MYSQL?MYSQL的架构以及SQL执行语句的过程是什么?有哪些数据库的类型?一篇文章带你弄懂!

文章目录 前言一、为什么需要数据库二、数据库的相关概念1.什么是结构化查询语言 (SQL)2.什么是数据库管理系统 (DBMS)3.什么是 MySQL 数据库 三、数据库分类1.关系型数据库(SQL)2.非关系型数据库(NoSQL) 四、MYSQL架构1.各组件功…

奇怪问题说 - 测试篇

文章目录 1.什么是软件测试2.软件测试和开发的区别3.软件测试的发展:4.软件测试岗位5.软件测试在不同类型公司的定位6.一个优秀的软件测试人员具备的素质6.1综合能力6.2掌握自动化测试技术6.3优秀的测试用例设计能力6.4探索性思维6.5有责任感和一定的压力 7.软件测试…

智能优化算法 | Matlab实现霸王龙优化算法(TROA)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现霸王龙优化算法(TROA)(内含完整源码) 源码设计 %%clear all clcSearchAgents_no=50; % Number of search agentsFunction_name=</

单片机11-13

目录 蜂鸣器 蜂鸣器播放按键提示音 蜂鸣器播放音乐 AT24C02&#xff08;IIC&#xff09;总线 AT24C02数据存储 AT24C02秒表&#xff08;定时器扫描按键&#xff09; DS18B20温度传感器&#xff08;单总线&#xff09; 温度显示 温度报警器 蜂鸣器 蜂鸣器播放按键提示音…

ElasticSearch7.7.1集群搭建

前言 Elasticsearch&#xff08;ES&#xff09;是一个基于Apache Lucene的分布式、高扩展、近实时的搜索引擎&#xff0c;主要用于海量数据快速存储、实时检索、高效分析的场景。通过简单易用的RESTful API&#xff0c;Elasticsearch隐藏了Lucene的复杂性&#xff0c;使得全文搜…

kali系统下多版本JDK共存

0、前言 从上周末到这周都在做RCE(Remote Command/Code Execute&#xff0c;远程命令执行或者代码执行 )相关漏洞复现&#xff0c;像log4j2漏洞在复现过程用到的JDK有特定版本要求&#xff0c;我的kali虚拟机默认是JDK11&#xff0c;而我又不希望直接删除JDK11&#xff0c;可多…

Vue2:通过代理服务器解决跨域问题

一、场景描述 现在的项目大多数是前后端分离的。Vue前端项目通过ajax去请求后端接口的时候&#xff0c;会有同源策略的限制。从而产生跨域问题。 二、基本概念 1、什么是同源策略&#xff1f; 就是前端服务和后端服务的协议名&#xff0c;IP或主机名&#xff0c;端口号不完…

Linux进程间通信(IPC)机制之一:管道(Pipes)详解

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;Nonsense—Sabrina Carpenter 0:50━━━━━━️&#x1f49f;──────── 2:43 &#x1f504; ◀️ ⏸ ▶️ …