Java:LocalDateTime、LocalDate、Date、String相互转化

前言:LocalDateTime、LocalDate、Date三者联系

  1. 非线程安全的方法

    Date类的大部分方法都不是线程安全的,比如setYear()、setMonth()、setDate()、setHours()、setMinutes()、setSeconds()等方法。这些方法都可以修改Date对象的内部状态。如果多个线程同时访问和修改同一个Date对象,就会发生竞态条件,导致程序出现错误的结果。

  2. 全局变量的使用

    Date类有两个静态变量,分别是DateParserCalendarSystem。这两个变量是全局共享的,如果多个线程同时访问和修改这两个变量,也会导致程序出现竞态条件。

因此,如果需要在线程中使用日期时间相关的操作,建议使用线程安全的日期时间类,比如JDK8中引入的新日期时间API中的LocalDateTime、LocalDate等类,或者使用线程安全的DateFormat和Calendar类。

1. LocalDate互转String  >> Date >> LocalDate 
public class BaseTest {public static void main(String[] args) {String str = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));System.out.println("日期字符串 >>> " + str );LocalDate localDate = LocalDate.parse(str);System.out.println("日期对象 >>> " + localDate );Date date = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());System.out.println("日期对象转date >>> " + date);LocalDate localDate2 = date .toInstant().atZone(ZoneId.systemDefault()).toLocalDate();System.out.println("date转日期对象 >>> " + localDate2);}}

2. LocalDateTime互转String  >> Date >> LocalDateTime
public class BaseTest {public static void main(String[] args) {String str = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));System.out.println("日期字符串 >>> " + str);LocalDateTime localDateTime = LocalDateTime.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));System.out.println("日期对象 >>> " + localDateTime);Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());System.out.println("日期时间对象转date >>> " + date );LocalDateTime localDateTime2 = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();System.out.println("date转日期时间对象 >>> " + localDateTime2);}}

3.Date相互转String
	DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("date转String字符串:" + df.format(date));DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("String字符串转date:" + df1.parse(str));

注意:SimpleDateFormat是线程不安全的类,不适用于多线程环境,所以在实际开发中需要注意线程安全问题。可以考虑使用ThreadLocal来解决线程安全问题。 

public class BaseTest {public static void main(String[] args) throws ParseException {String str = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));LocalDateTime localDateTime = LocalDateTime.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());ThreadSafeDateFormat dateFormat = new ThreadSafeDateFormat();System.out.println("date转String字符串安全版:" + dateFormat.get().format(date));System.out.println("String字符串转date安全版:" + dateFormat.get().parse(str));}}class ThreadSafeDateFormat {public ThreadLocal<DateFormat> dateFormatThreadLocal = ThreadLocal.withInitial(() ->new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));public DateFormat get() {return dateFormatThreadLocal.get();}}

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

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

相关文章

基于ssm重庆理工大学心理咨询管理子系统的分析与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;心理咨询预约信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能…

EasyExcel使用: RGB字体,RGB背景颜色,fillForegroundColor颜色对照表

EasyExcel使用: RGB字体&#xff0c;RGB背景颜色&#xff0c;fillForegroundColor颜色对照表 使用EasyExcel导出表格可能会对字体颜色和单元格背景颜色进行自定义的修改。 可以自定义字体颜色或者每个单元格的颜色 要想自定义颜色&#xff0c;需要重写CellWriteHandler接口&am…

Vue 组件传参 prop向下传递、emit向上传递

组件传参 学习了组件用法&#xff0c;就像一种嵌套引用关系&#xff0c;在这个关系中&#xff0c;经常会涉及相互传数据的需求&#xff0c;即父组件传子组件&#xff0c;子组件传父组件。 父、子组件的关系可以总结为 : prop 向下传递(和事件无关)&#xff0c; emit 事件&…

AI-数学-初高中-不等式

原教学视频&#xff1a;初高衔接】2不等式解法梳理_哔哩哔哩_bilibili 1.一元二次不等式 2.分式不等式 3.高次函数图像 4.绝对值不等式 5.根式不等式

tsconfig.app.json文件报红:Option ‘importsNotUsedAsValues‘ is deprecated...

在创建vue3 vite ts项目时的 tsconfig.json&#xff08;或者tsconfig.app.json&#xff09; 配置文件经常会报一个这样的错误&#xff1a; 爆红&#xff1a; Option ‘importsNotUsedAsValues’ is deprecated and will stop functioning in TypeScript 5.5. Specify compi…

打造完美有声书体验,Audiobook Builder for Mac助您一键生成

在快节奏的生活中&#xff0c;有声书成为越来越多人追求放松与娱乐的方式。然而&#xff0c;找到合适的有声书却不容易&#xff0c;而Audiobook Builder for Mac正是为解决这个问题而诞生的完美解决方案。 Audiobook Builder for Mac是一款专业的有声书生成工具&#xff0c;它…

Linux笔记本电脑投屏到电视,用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上&#xff0c;可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先&#xff0c;在Linux系统的电脑里用chrome浏览器或edge浏览器打开网址webcast.airdroid.com。这个网址就是AirDroid Cast的网页版。你可以看到中间白色框框的…

PromptNER: Prompt Locating and Typing for Named Entity Recognition

原文链接&#xff1a; https://aclanthology.org/2023.acl-long.698.pdf ACL 2023 介绍 问题 目前将prompt方法应用在ner中主要有两种方法&#xff1a;对枚举的span类型进行预测&#xff0c;或者通过构建特殊的prompt来对实体进行定位。但作者认为这些方法存在以下问题&#xf…

洛谷 NOIP2014普及组 比例简化 + 洛谷 NOIP2015普及组 扫雷游戏

先看第一道题比例简化&#xff1a; 题干&#xff1a; 输入输出样例以及样例范围&#xff1a; 其实不难看出这一道题目的样例范围并不大&#xff0c;所以其实我们可以用暴力枚举的方式进行解答&#xff0c;虽然暴力枚举在很多题目并不值得提倡&#xff0c;不过不得不承认它是一…

【计算机系统结构实验】实验2 流水线中的冲突实验

2.1 实验目的 加深对计算机流水线基本概念的理解&#xff1b; 理解MIPS结构如何用5段流水线来实现&#xff0c;理解各段的功能和基本操作&#xff1b; 加深对结构冲突/数据冲突/控制冲突的理解&#xff1b; 进一步理解解决数据冲突的方法&#xff0c;掌握如何应用定向技术来…

如何提升亚马逊、速卖通店铺自然排名?测评自养号的关键要素

一、自然排名的重要性 一条链接是否推广成功或者赚到钱&#xff0c;就看这条链接的自然排名有没有打上来! 无论是搜索流量的自然排名&#xff0c;还是关联流量的自然排名&#xff0c;或BSR排行榜&#xff0c;这些自然排名的入口就是我们要时刻盯紧的位置。 二、自然排名的位…

27.Java程序设计-基于Springboot的在线考试系统小程序设计与实现

1. 引言 随着数字化教育的发展&#xff0c;在线考试系统成为教育领域的一项重要工具。本论文旨在介绍一个基于Spring Boot框架的在线考试系统小程序的设计与实现。在线考试系统的开发旨在提高考试的效率&#xff0c;简化管理流程&#xff0c;并提供更好的用户体验。 2. 系统设…