Java解析CST时间出现ParseException的解决方法?

Java时间处理:从Date的坑到java.time的优雅演进 在软件开发中,时间处理是基础且关键的技术领域,涉及日期、时区、格式化和线程安全等核心概念。其原理在于如何准确表示和操作时间点,这直接关系到数据一致性和系统稳定性。时间处理的技术价值在于确保跨时区、高并发场景下的业务逻辑正确性,避免因时间错乱导致的订单异常、日志混乱等问题。应用场景广泛,包括电商交易、用户行为记录、定时任务调度等。本文聚焦Java中的时间处理演进,深入剖析遗留的java.util.Date类的设计缺陷,如可变性带来的线程安全隐患,以及SimpleDateFormat的非线程安全陷阱。同时,对比 阅读详情

今天线上出了个bug,发现是在解析CST格式的时间时,出了一个bug。

后来发现

一是需要指定对应的格式 "EE MMM dd HH:mm:ss z yyyy"

二是需要指定时间格式 Locale.ENGLISH

注:我们在做时间格式转换时,主要是找对匹配时间格式的模式;另外,英文格式的时间转换时需要带上Locale.ENGLISH,否则会转换失败,因为它默认的是本地化的设置,除非你的操作系统是英文的,总之时间转换时需要时间格式与模式保持一致。

 

修正后代码如下

private Date string2Date(String date) {
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
        return sdf.parse(date);
    } catch (ParseException e) {
        log.error("时间转换异常 {}", e);
        throw new RuntimeException("时间转换异常:" + e);
    }
}

另外在网上查阅资料的时候,我发现有人写3个E,有人写2个E。

后来经过我的测试,发现除了M必须要写3个以上,其他的字母可以随便写多少个.

例如下面两个都可以正常运行

SimpleDateFormat sdf = new SimpleDateFormat("E MMM d H:m:s z y",Locale.ENGLISH);
SimpleDateFormat sdf = new SimpleDateFormat("EEEEEEEEEEEE MMM ddddddd HHHHHHH:mmmmm:sssssss zzzzzzzz yyyyyyyyyyy", Locale.ENGLISH);

本来想探究下源码,过于复杂,卒.

 

 

参考文章:

Java日期格式化之将String类型的GMT,GST日期转换成Date类型 https://blog.youkuaiyun.com/fengyuzhengfan/article/details/40164721

Java 日期时间简介    https://www.runoob.com/java/java-date-time.html

Java SimpleDateFormat 中英文时间格式化转换  https://blog.youkuaiyun.com/KingWTD/article/details/48089111

virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项 无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C 阅读详情

相关推荐

Windows 10/11下Drive Composer Pro 2.9.0完整安装与连接ACS880变频器实战教程

本文详细介绍了在Windows 10/11系统上安装Drive Composer Pro 2.9.0并连接ACS880变频器的完整教程。从系统环境准备、软件安装到许可证配置,再到USB、蓝牙和以太网三种连接方式的实战操作,帮助工业自动化工程师快速掌握ABB变频器的调试技巧。

weixin_32956805的博客 526

使用【JSON.parseArray】反序列化yyyy-MM-dd HH:mm:ss格式日期失败

解决方案 在你反序列化的java对象中Date类型的属性加上注解yyyy-MM-dd’T’HH:mm:ss.SSS Z这种格式是ISO8601的规定的时间格式 其中T表示日期跟时间的分隔 SSS表示毫秒数 Z表示0时区

weixin_43377482的博客 3612

PCB设计必看:铜皮厚度与载流能力对照表(附Excel计算工具)

本文深入解析了PCB设计中铜皮厚度与载流能力的核心关系,提供了基于IPC-2152标准的动态计算逻辑与实用Excel工具。文章不仅分享了载流对照表,更重点剖析了影响载流能力的关键因素(如铜厚、线宽、温升、布线层),并给出了高电流设计的实战技巧与测试验证方法,帮助工程师规避常见陷阱,实现从理论到实践的闭环设计。

weixin_29228781的博客 721

JAVA格式化时间用了YYYY-MM-dd问题

在论坛看到小伙伴说格式化时间用到了"YYYY-MM-dd"在时间上出现了bug,测试数据如下: @Test public void test(){ try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date newDat...

weixin_42202257的博客 3124

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

目前最新NIST随机数测试软件下载、安装、及使用教程

最近由于科研需要,在搞一些随机数的测试的事情,众所周知 随机数测试我们可以使用NIST的软件进行多大15项的随机测试,我也在网上查找了很多大牛的博客,但是都是年代久远,很多的链接现在都是物是人非,都是不能直接使用了,今天顺便抽点时间更新一下这个NIST软件的下载及使用。我们首先讲一下该软件的下载:1.我们直接取NIST的官网(https://csrc.nist.gov/)下载即可 ;链接如下:下载...

Miracle.Zhao的博客 3万+

关于java.text.ParseException: Unparseable date的解决办法

改为如下格式: public class DateConverter implements Converter<String, Date> { @Override public Date convert(String s) { Date date; //实现将字符串转成⽇期类型(格式是yyyy-MM-dd) SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"

王大梦的博客 5万+

lammps蒙特卡洛MC模拟案例

在lammps中,和MC相关的模拟命令有三个:fix gcmc、fix atom/swap、fix sgcmc。在一个lammps模拟中,mc和md可同时存在,间隔运行,所以设置fix sgcmc命令的同时,可以同时设置系综(nve、nvt或者npt)。lammps官网自带案例中也有一个fix sgcmc的案例,主要模拟FeCu合金的MC建模。sgcmc命令可应用到合金的模拟中,如短程有序模拟。MC运行间隔为100步,最终的浓度比例为0.02,也就是2%的Fe原子交换为Cu原子。大家好,我是小马老师。

lammps_jiayou的博客 1825

格式化 yyyyMMddHHmmss时间为标准时间字符串

格式化时间 public static void main(String[] args) throws Exception { String str = "20130309123135"; SimpleDateFormat formatA = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat formatB = new SimpleDateFormat("yyyy-MM-dd.

傲剑阁 2113

uniapp - 详解使用高德地图在地图上实现绘制边界/点聚合/行政区域高亮等功能,Uniapp高德地图点聚合标记及绘制点线面示例代码(全端兼容H5网页、小程序、安卓app、苹果app、nvue)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,高德地图,uniAPP高德地图实现点聚合,地图区域描边、点标记、点信息详情弹窗,实现绘制边界区域,uniapp H5使用高德地图实现点聚合、行政区域高亮,实现高德地图的marker聚合功能,高德地图进行marker标点,点信息展示,点击标记点弹出对话框,点击聚合点后显示信息模态框,打标点,【Uniapp】高德地图的接入自定义标点与信息窗体使用,绘制行政区域边界,绘制多边形,电子围栏,高德行政区划边界,

✅ 精选推荐文章 1万+

社会网络仿真软件:NetLogo_(14).社会网络数据导入与导出

在NetLogo中,社会网络的仿真不仅依赖于模型的内部逻辑,还需要能够灵活地导入和导出数据。这使得用户可以利用外部数据来初始化模型,或者将模型的运行结果导出以便进一步分析。本节将详细介绍如何在NetLogo中实现社会网络数据的导入和导出,包括常见的数据格式和具体的代码示例。

kkchenjj的博客 600

DateTimeParseException(日期时间解析异常)可能的原因和解决方法

是 Java 中处理日期时间解析时可能抛出的异常之一。这个异常通常表示在解析日期时间字符串时出现了问题。在实际应用中,确保日期时间字符串和解析模式的一致性,以及考虑到可能出现的时区、Locale 和其他因素,将有助于避免。确保根据你的具体需求选择合适的解决方法,并根据日期时间字符串的格式和特点进行相应的调整。下面是一个简单的例子,演示如何使用。来解析日期时间字符串,并处理。

Java开源程序猿 5177

基于Mask-RCNN网络的书架图书书脊分割和检测(含代码)

图书馆的书架上的图书书脊分割/检测对于图书书名等信息的识别具有重要意义,因此,该博客基于Mask-RCNN网络实现了图书书脊的分割和检测,有利于进一步利用ocr文字识别技术实现图书书名等信息的入库。如下图所示,为书架原始数据和分割/检测后的结果。(本文已训练模型,无需训练)

qq_44619530的博客 2025

FAQ(59):java.text.ParseException: Unparseable date: “Wed Jan 24 16:28:14 CST 2018“

FAQ(59):java.text.ParseException: Unparseable date: "Wed Jan 24 16:28:14 CST 2018"

Diligence is the mother of success. 6170

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java中处理CST格式时间

今天被CST格式的时间折腾了一晚上,先看看什么是CST格式时间:Mon Nov 19 14:06:58 CST 2012 这就是CST格式时间,这里我们需要处理成常见的格式       SimpleDateFormat cstFormater = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); ...

蜗牛的轨迹 2849

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java 判断是否为cst格式_格式化CST日期时间(包含英文和中文两种格式的CST时间)...

package com.ldy.util;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;public class DateTimeUtil {public static String formatCSTDate(Strin...

weixin_39582708的博客 523

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java.text.ParseException: Unparseable date: “1607411173725“ (at offset 13)

转https://blog.youkuaiyun.com/jjs15259655776/article/details/91451641 SimpleDateFormat.format把date转成String SimpleDateFormat.parse把String转成date。 tips: SimpleDateFormat.parse的时候,经常会有ParseException原因是输入的字符串格式跟SimpleDateFormat定义的格式不一致。会报java.text.ParseExceptio.

z936689039的博客 761

java 时间格式问题 java.text.ParseException: Unparseable date

报错 java.text.ParseException: Unparseable date 原因 SimpleDateFormat()是以原文本格式为主 SimpleDateFormat 中 parse 是解析原格式 所以SimpleDateFormat (原格式) String time = "20211021205456";; SimpleDateFormat(yyyyMMddhhmmss) sdf.parse(time); -- 得到结果 Thu Oct 21 20:54:56 CST 2

vransy的博客 3895

把CST时间字符串类型转换成Date类型

把CST时间字符串类型转换成Date类型

weixin_61428498的博客 720

Unparseable date: “Fri Sep 02 21:22:57 CST 2022

Unparseable date: "Fri Sep 02 21:22:57 CST 2022" and 给你的当前时间增加年月日等

酷酷的馫博客 3485

关于java String格式 转Date格式 SimpleDateFormat 报java.text.ParseException 错误

我们日常在java程序中 ,将字符串类型的日期转化为date型 ,常用的方法是 java.text.SimpleDateFormat类。 例如: ;SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//小写的mm表示的是分钟  String dstr="2008-4-24"; java.util.Date date=sdf.

upupdate_的专栏 4846

java.text.ParseException及日期格式化

java.text.ParseException及日期格式化

qq_62884427的博客 2775

Java Date 类与 SimpleDateFormat 类常用方法总结

摘要:Date类用于处理时间戳和日期比较,但多数分量方法已过时;SimpleDateFormat实现Date与字符串的转换,但存在线程安全问题。两者配合可完成日期存储与格式化,但Java8+推荐使用java.time包替代。实际开发中,新项目建议使用LocalDateTime和DateTimeFormatter,旧代码需注意线程安全和异常处理。

m0_74004373的博客 839

时间转换问题1:cst 2015 String类型转换为Date类型

项目过程中 遇到问题 百度结果搜集:方便下次同样问题 快速解决,防止重复问题多次搜索。感谢度娘上各位的回答

qq_26825829的博客 426

SimpleDateFormat方法,时间操作

【代码】SimpleDateFormat方法,时间操作。

汪程序员 467

excel导入数据库时间格式为Thu Mar 01 00:00:00 CST 1984 的解决方法

/获取excel导入的时间字段。// 将Date对象格式化为目标字符串。// 将字符串解析为Date对象。// 定义输入的日期格式。// 定义输出的日期格式。

weixin_44261328的博客 468
上一篇: 读书笔记:《深入理解计算机系统》 之 第十二章 并发编程
下一篇: 浅谈两阶段提交和三阶段提交
scanq
博客等级 码龄11年 15粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值