【Java 基础】24 日期操作

文章目录

    • 1.Date
    • 2.LocalDate
    • 3.LocalTime
    • 4.LocalDateTime
    • 5.DateTimeFormatter
    • 6.Period
    • 7.Duration
    • 8.ZoneId
    • 9.ZonedDateTime
    • 总结

日期和时间是我们常见的操作对象,Java 也提供了强大的日期和时间处理类库,使我们可以方便的进行日期的表示、计算、格式化等。

1.Date

在 Java 早期版本中,主要使用 java.util.Date 类来表示日期和时间

示例代码:

public class Demo {public static void main(String[] args) {// 获取当前时间Date currentDate = new Date();System.out.println(currentDate);// 获取时间戳long timestamp = currentDate.getTime();System.out.println(timestamp);}
}

运行结果:

Thu Dec 07 20:58:11 CST 2023
1701953891262

2.LocalDate

表示日期 ,提供了丰富的方法来进行日期操作

示例代码:

public class Demo {public static void main(String[] args) {// 获取当前日期LocalDate currentDate = LocalDate.now();System.out.println(currentDate);}
}

输出结果:

2023-12-07

3.LocalTime

表示时间,提供了丰富的方法来进行时间的操作

示例代码:

public class Demo {public static void main(String[] args) {// 获取当前时间LocalTime currentTime = LocalTime.now();System.out.println(currentTime);}
}

输出结果:

21:08:21.256

4.LocalDateTime

表示日期时间 ,提供了丰富的方法来进行时间的操作

示例代码:

public class Demo {public static void main(String[] args) {// 获取当前日期时间LocalDateTime currentDateTime = LocalDateTime.now();System.out.println(currentDateTime);}
}

输出结果:

2023-12-07T21:08:21.256

5.DateTimeFormatter

用于格式化和解析日期时间,它提供了丰富的预定义格式,同时也支持自定义格式

示例代码:

public class Demo {public static void main(String[] args) {LocalDateTime currentDateTime = LocalDateTime.now();// 使用预定义格式String formattedDateTime = currentDateTime.format(DateTimeFormatter.ISO_DATE_TIME);System.out.println(formattedDateTime);// 使用自定义格式DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String customFormattedDateTime = currentDateTime.format(customFormatter);System.out.println(customFormattedDateTime);}
}

输出结果:

2023-12-07T21:02:23.796
2023-12-07 21:02:23

6.Period

用于表示日期之间的差距

示例代码:

public class Demo {public static void main(String[] args) {LocalDate startDate = LocalDate.of(2020, 1, 1);LocalDate endDate = LocalDate.now();// 计算日期之间的差距Period period = Period.between(startDate, endDate);System.out.println("Years: " + period.getYears() + ", Months: " + period.getMonths() + ", Days: " + period.getDays());}
}

输出结果:

Years: 3, Months: 11, Days: 6

7.Duration

用于表示时间之间的差距

示例代码:

public class Demo {public static void main(String[] args) {LocalDate startDate = LocalDate.of(2020, 1, 1);LocalDate endDate = LocalDate.now();// 计算时间之间的差距long daysDiff = ChronoUnit.DAYS.between(startDate, endDate);System.out.println("Days Difference: " + daysDiff);}
}

输出结果:

Days Difference: 1436

8.ZoneId

用于表示时区

示例代码:

public class Demo {public static void main(String[] args) {LocalDateTime localDateTime = LocalDateTime.now();// 获取系统默认时区ZoneId systemZone = ZoneId.systemDefault();ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, systemZone);System.out.println(zonedDateTime);}
}

输出结果:

2023-12-07T21:07:11.523+08:00[Asia/Shanghai]

9.ZonedDateTime

用于获取日期和时间以及时区信息

示例代码:

public class Demo {public static void main(String[] args) {LocalDateTime localDateTime = LocalDateTime.now();// 获取指定时区ZoneId newYorkZone = ZoneId.of("America/New_York");ZonedDateTime newYorkDateTime = ZonedDateTime.of(localDateTime, newYorkZone);System.out.println(newYorkDateTime);}
}

输出结果:

2023-12-07T21:07:11.523-05:00[America/New_York]

总结

Java 提供了丰富的日期和时间处理类,包括 DateLocalDateLocalTimeLocalDateTimeDateTimeFormatterPeriodDurationZoneIdZonedDateTime。选择合适的类取决于具体的需求,但通常推荐使用新的日期和时间 API,例如 LocalDateTime,以获得更好的可读。

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

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

相关文章

springboot(ssm甘肃旅游工艺品商城 旅游管理系统Java(codeLW)

springboot(ssm甘肃旅游工艺品商城 旅游管理系统Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&…

AntDB数据库助力中国移动结算中心建设

结算中心负责中国移动漫游伙伴进行数据和财务清算支撑。本次结算中心项目涉及结算处理、资料管理、信息管理等模块,用以构建系统的结算能力。 建设需求 结算中心现有传统集中式架构的数据库无法做到根据业务量变化进行弹性扩缩容,目前系统数据量巨大&a…

ESP32-Web-Server编程- 在 Web 上开发动态纪念册

ESP32-Web-Server编程- 在 Web 上开发动态纪念册 概述 Web 有很多有趣的玩法,在打开网页的同时送她一个惊喜。 需求及功能解析 本节演示在 ESP32 上部署一个 Web,当打开对应的网页时,将运行动态的网页内容,显示炫酷的纪念贺词…

如何解决依赖传递引起的版本冲突?

依赖传递引起的版本冲突通常是由于在开发过程中,不同模块之间的依赖版本不匹配造成的。解决这种冲突的方法主要包括以下几种: 版本管理:在项目的配置文件中(如 Maven 的 pom.xml 或 Gradle 的 build.gradle)清晰地定义…

计算机操作系统4

1.什么是进程同步 2.什么是进程互斥 3.进程互斥的实现方法(软件) 4.进程互斥的实现方法(硬件) 5.遵循原则 6.总结: 线程是一个基本的cpu执行单元,也是程序执行流的最小单位。 调度算法:先来先服务FCFS、短作业优先、高响应比优先、时间片…

YOLOv6 学习笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、YOLOv6贡献和改进二、YOLOv6核心概念三、YOLOv6架构改进四、YOLOv6重参思想五、YOLOv6的损失函数总结 前言 在计算机视觉领域,目标检测技术一直…

有趣的代码——有故事背景的程序设计5

接着上篇文章再和大家分享一下有趣的代码! 目录 1.求母串中子串的个数 2.行走机器人 3.荷兰国旗问题 4.统计考研成绩 1.求母串中子串的个数 给定一个母串s和一个子串t,在主串s中寻找子串t的过程为字符串匹配。每匹配成功一次,即母串中含有…

移动app测试要不要做第三方软件测试?

移动app测试是指通过对移动应用进行全面的评估和验证,以确保其功能和性能符合设计要求,以提供给用户最好的体验。通常包括功能测试、界面测试、性能测试、兼容性测试等多个环节。由于现在越来越多的软件企业会选择将测试工作交由第三方软件测试进行&…

【Git】本地代码如何托管到远程仓库(保姆级教程)

注意前提是你本地已经安装了Git 1. 新建远程仓库 选一个git服务器,新建一个远程仓库,这里我选用的是gitee 点击确定后,显示如下界面表示仓库已经新建完成 2.建立本地仓库 本地新建一个空文件夹,在里面写一些你的初始代码文件。…

夜莺专业版网络设备功能介绍

网络设备采集简介 网络设备的问题通常会产生较大范围的影响,因此采集监控网络设备是一项常见的任务。不同公司在实施网络设备采集时可能采用不同的方案,主要有三类: SNMP(Simple Network Management Protocol)&#x…

2个月拿下信息系统项目管理师攻略(攻略超级全)

信息系统项目管理师(高项)一次性过啦!结合这次备考经验,给大家总结一下复习方法。 先上图,开心一下! 一、我为什么选择了高项 为什么我会选信息系统项目管理师,也就是我们常说的高项。 原因1…

深入浅出分析kafka客户端程序设计 ----- 生产者篇----万字总结

前面在深入理解kafka中提到的只是理论上的设计原理, 本篇讲得是基于c语言的kafka库的程序编写!!!!! 首先要编写生产者的代码,得先知道生产者的逻辑在代码上是怎么体现的 1.kafka生产者的逻辑 …

zookeeper集群 +kafka集群

1.zookeeper kafka3.0之前依赖于zookeeper zookeeper是一个开源,分布式的架构,提供协调服务(Apache项目) 基于观察者模式涉及的分布式服务管理架构 存储和管理数据,分布式节点上的服务接受观察者的注册&#xff0c…

Date与LocalDate互转

1、Date转LocalDate Date toDay new Date(); LocalDate localDate toDay.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();2、LocalDate转Date LocalDate localDate LocalDate.parse("2023-01-01", DateTimeFormatter.ISO_LOCAL_DATE); Date date D…

ubuntu18.04 vscode 安装 vue.volar Vue Language Features (Volar) , vue3 必备插件

直接在vscode 里面下载老是失败,不是网络问题,而是vue.volar插件配置的vscode版本与vscode版本不一致导致出现安装失败 官网下载最新的 vue.volar插件 https://marketplace.visualstudio.com/ 官网搜索 vue.volar 然后打开 Vue Language Features (Vol…

类和对象,this指针

一、类的引入: 如下,在C中,我们可以在结构体中定义函数,如下,之前我们学习C中中一直是在结构体中定义变量。 struct student{void studentinfo(const char* name,const char* gener,int age){ strcpy(_name,name);st…

漫谈Uniapp App热更新包-Jenkins CI/CD打包工具链的搭建

零、写在前面 HBuilderX是DCloud旗下的IDE产品,目前只提供了Windows和Mac版本使用。本项目组在开发阶段经常需要向测试环境提交热更新包,使用Jenkins进行CD是非常有必要的一步。尽管HBuilderX提供了CLI,但Jenkins服务通常都是搭建在Linux环境…

一个类似connectedpapers的文献知识图谱神器:Libraries S2

在阅读文献、写综述、写论文的related works的时候,总会苦恼如何查阅该领域的论文呢?怎么才能尽可能的查找齐全? 以前在看论文的时候,我都是先用谷歌学术搜索,然后看到优秀的相关文文献后,再去查看它的参考…

java应用在Windows服务器运行时控制台输出日志中文乱码终极解决办法

修改注册表,适用于cmd,在各种开发工具终端中均生效 第一步、按winr,输入regedit运行,进入注册表界面 第二步、找到【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor】 第三步、新建一个表项,命名为autor…

世微 AP3266 大功率同步降压恒流芯片 过EMC 车灯驱动

产品描述 AP3266 是高效率、外围简单、内置功率管的同步降压恒流芯片,适用于4-40V输入的降压LED恒流驱动芯片。输出最大功率可达 40W,最大电流3.6A。AP3266 可通过调节 OVP 端口的分压电阻,设定输出空载电压 保护,避免高压 空载上…