java中Date与LocalDateTime的区别

1、主要有以下区别:

  • Date是Java早期引入的日期和时间类,而LocalDateTime是Java 8中引入的新日期和时间类。
  • Date是可变类,容易引发线程安全问题,而LocalDateTime是不可变类,更加可靠和可维护。
  • Date考虑系统时区,而LocalDateTime不带时区信息,如果需要处理时区,可以使用ZonedDateTime类。
  • Date精确到毫秒级别,但设计存在问题,容易出错。LocalDateTime提供了更好的精确度,可表示纳秒级别的时间。
  • Date的API设计相对较旧,不够直观,部分方法已过时。LocalDateTime的API设计更现代化、易于使用,并提供了方便的方法来处理日期和时间。

推荐在Java 8及以上版本中使用LocalDateTime,因为它具有更好的API设计、精确度和时区处理能力,同时避免了Date类中存在的问题。

2、DateLocalDateTime的基本用法:

import java.util.Date;
import java.time.LocalDateTime;public class DateTimeExample {public static void main(String[] args) {// 使用Date类表示当前日期和时间Date date = new Date();//Date: Mon May 16 11:35:07 GMT 2023System.out.println("Date: " + date);// 使用LocalDateTime类表示当前日期和时间LocalDateTime localDateTime = LocalDateTime.now();//LocalDateTime: 2023-05-16T11:35:07.342System.out.println("LocalDateTime: " + localDateTime);// 创建指定日期和时间的Date对象Date specificDate = new Date(121, 4, 16, 10, 30); // year: 2021, month: 5 (0-based), day: 16, hour: 10, minute: 30//Specific Date: Mon May 16 10:30:00 GMT 2022System.out.println("Specific Date: " + specificDate);// 创建指定日期和时间的LocalDateTime对象LocalDateTime specificDateTime = LocalDateTime.of(2021, 5, 16, 10, 30);//Specific LocalDateTime: 2021-05-16T10:30System.out.println("Specific LocalDateTime: " + specificDateTime);// 修改Date对象的时间(注意Date是可变的)date.setHours(12);date.setMinutes(45);//Modified Date: Mon May 16 12:45:07 GMT 2023System.out.println("Modified Date: " + date);// 修改LocalDateTime对象的时间(注意LocalDateTime是不可变的)LocalDateTime modifiedDateTime = localDateTime.withHour(12).withMinute(45);// Modified LocalDateTime: 2023-05-16T12:45:07.342System.out.println("Modified LocalDateTime: " + modifiedDateTime);}
}

运行以上代码,你会看到类似以下的输出:

Date: Mon May 16 11:35:07 GMT 2023
LocalDateTime: 2023-05-16T11:35:07.342
Specific Date: Mon May 16 10:30:00 GMT 2022
Specific LocalDateTime: 2021-05-16T10:30
Modified Date: Mon May 16 12:45:07 GMT 2023
Modified LocalDateTime: 2023-05-16T12:45:07.342

1、易读性:LocalDateTime中的方法命名更加清晰和直观,采用了自然语言的方式,提高了代码的可读性和可理解性。Date类中的月份是以0为基准的,即0表示一月,11表示十二月。这种偏移量的设计容易引起混淆和错误,因为人们通常习惯以1为基准表示月份。

2、方法链式调用:LocalDateTime提供了一系列方便的方法来处理日期和时间,这些方法可以进行链式调用,使代码更加简洁和优雅。

3、时间单位明确:LocalDateTime中的方法在处理时间单位时明确指定了单位,例如plusDays()、minusHours()等,避免了单位不明确的问题。

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

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

相关文章

离散化实现低通滤波器(选用双线性变换)

学习了离散化后整理了其中的核心步骤,此处不对原理进行深究,仅仅介绍如何对一个连续系统进行离散化 此处可以得到低通滤波器的截止频率为1000rad/s. 离散化的过程为将s 2/Ts * [(z - 1) / (z 1)] (选用双线性变换) 得到离散化序列为 Y(z) [w…

Python-VBA函数之旅-bytearray函数

目录 1、bytearray函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:非风V非雨-CSDN博客 bytearray函数在Python中提供了一种可变字节序列的表示方式,这在实际编程中有多种应用场景。常见的应用场…

如何用Python编写简单的网络爬虫(页面代码简单分析过程)

一、什么是网络爬虫 在当今信息爆炸的时代,网络上蕴藏着大量宝贵的信息,如何高效地从中获取所需信息成为了一个重要课题。网络爬虫(Web crawler)作为一种自动化工具,可以帮助我们实现这一目标,用于数据分析…

项目实战 | 使用python分析Excel销售数据(用groupby)

项目实战 | 使用python分析Excel销售数据 本文目录: 零、00时光宝盒 一、提出问题 二、理解数据 2.1、安装python读取excel文件的库 2.2、查看excel表的字段名和前几行记录 2.3、查看excel表结构 2.4、查看索引 2.5、查看每一列的列表头内容 2.6、查看每一…

多线程应用

多线程初始 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespa…

移除元素Java实现

题意 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 额外空间 并 原地 修改数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元…

websocket实践

文章目录 背景WebSocket API使用场景优点 实例步骤 1: 设置 WebSocket 服务器步骤 2: 创建客户端 HTML 页面步骤 3: 测试 WebSocket 通信注意事项实际操作 参考资料 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得浏览器和服务器只需建立一个连接,…

CSS:filter属性介绍

一、filter属性简介 值描述示例blur(Npx)设置高斯模糊效果。N是模糊半径,值越大,模糊效果越明显。filter: blur(5px);brightness(%)调整图像的亮度。百分比值小于100%会使图像变暗,大于100%会使图像变亮。filter: brightness(75%);contrast(…

el-table合计行添加按钮操作

针对于el-table中合计功能中的操作栏也可以按钮,并且可以添加点击事件 ElTable源码里footer部分是,这种方式渲染的,也就是 支持传递VNode。使用h第一个参数传递 组件,可以把组件转成VNode,比如现在要在右下角加一个 详…

无货源,0基础做电商,6个选品逻辑快速出单!

首先我们要先解决货源问题,再来谈选品逻辑。初入电商行业,进货渠道建议使用1688。首先1688是国内最大的B2B批发平台,平台服务和安全性都提供了一定的保障,以及丰富的货源选择。你可以浏览不同供应商的产品,对比价格、质…

11.java openCV4.x 入门- Imgcodecs之图像读写

专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤📖我们唯一拥有的就是今天,唯一能把握的也是今天建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 🧭文…

如何关闭WordPress的自动更新功能

Wordpress为什么自动更新 WordPress自动更新是为了提供更好的安全性和稳定性。 安全性:WordPress是一个广泛使用的内容管理系统,因此成为恶意攻击的目标。WordPress的自动更新功能确保你的网站及时获得最新的安全补丁和修复程序,以保护你的网…

【智能优化算法】基于领导者优化的哈里斯鹰优化算法(LHHO)

01.引言 基于领导者优化的哈里斯鹰优化算法leader Harris hawks optimization (LHHO),以增强Harris hawks optimization (HHO)的搜索能力。通过在探索阶段的适应性栖息和每一代哈里斯鹰的基于领导者的突变选择,可以实现更多的探索。使用经典的23个基准函…

跑模型——labelme的json文件转成yolo使用的txt文件(语义分割)

前言 将labelme多边形标注的json文件转换成yolo使用的txt文件 import os import json import numpy as np from tqdm import tqdm#实现函数 def json2txt(path_json, path_txt): # 可修改生成格式with open(path_json, r) as path_json:jsonx json.load(path_json)with open…

Flink常见面试问题(附答案)

目录 基础篇1. 什么是Apache Flink?2. Flink与Hadoop的区别是什么?3. Flink中的事件时间(Event Time)和处理时间(Processing Time)有什么区别?4. Flink的容错机制是如何实现的?5. 什…

node.js 包管理工具介绍 (npm与Yarn详细说明)

一、什么是包? 包(package)代表了一组特定功能的源码集合 二、什么是包管理工具? 也就是管理包的应用软件,可以对包进行下载、更新、删除、上传等操作。借助包管理工具,可以快速开发项目提升开发效率。包…

4.2.4 理解路由器数据包过程

1、实验目的 通过本实验可以掌握: 了解IP路由原理了解数据包封装和解封装的概念了解路由器路由和交换过程 2、实验拓扑 观察路由器路由数据包过程的实验拓扑如图4-3所示,设备接口地址信息如表4-2所示。 图4-3 观察路由器路由数据包过程的实验拓扑 本…

用Python编写GUI程序实现WebP文件批量转换为JPEG格式

在Python编程中,经常会遇到需要处理图片格式的情况。最近,我遇到了一个有趣的问题:如何通过编写一个GUI程序来实现将WebP格式的图片批量转换为JPEG格式?在这篇博客中,我将分享我使用Python、wxPython模块和Pillow库实现…

linux系统离线安装nginx

perlnginx是一个高性能的http和反向代理服务器,并发能力很强,一般用来做负载均衡比较多,分布式系统开发中用作web服务器。 一、下载 地址:nginx: download 我们下载这个稳定版本 二、环境依赖检查 nginx安装需要很多外部依赖&…

浅拷贝和深拷贝

1、两者区别: 首先对于一个对象中的基本数据类型,来做浅拷贝和深拷贝其实没有什么区别,都是将原始值复制一份给新的对象,但是对于对象中的引用数据类型来说,浅拷贝只是将引用数据类型的地址值复制一份给新的对象&#…