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

ArduPilot飞控系统代码解读及架构分析 ArduPilot飞控系统是一个复杂而强大的系统,通过模块化设计和分层架构,实现了灵活的飞行控制功能。模块化设计: 各个功能模块相对独立,便于维护和扩展多种飞行模式: 满足不同的飞行需求强大的控制算法: 实现稳定的姿态和位置控制完善的安全机制: 保障飞行安全丰富的配置选项: 通过参数系统实现高度可定制性这种架构使ArduPilot能够适应从简单的多旋翼到复杂的自主飞行器等各种应用场景。类结构分析:Mode基类 (mode.h/mode.cpp) 阅读详情

相关推荐

全桥LLC谐振变换器变频控制工作原理与仿真

全桥LLC谐振变换器以其效率高、全范围软开关、器件电应力小等优点,越来越多地应用于大功率场合。电力电子技术的发展日益追求高频化,所带来的问题是半导体开关器件高频运行时的开关损耗急剧增加。各种软开关电路随之出现。可以有效减小开关损耗,使进一步提高开关频率成为可能。谐振式开关因其可在电流自然过零点开通半导体器件,实现零电压开关,特别适合采用MOSFET作开关的装置。最简单的谐振电路有串联谐振(SRC)和并联谐振(PRC)。SRC只能工作于降压状态,应用受限;

晞子的技术札记 3073

使用【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

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2316

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

25年PINN创新点大盘点!

在科研论文的激烈角逐中,想轻松产出高含金量成果?物理信息神经网络(PINN)堪称“宝藏研究方向”,是冲击高分区论文的绝佳赛道!对于渴望发表优质论文的科研伙伴,这三大研究路径值得重点关注。首先是自适应PINN,在PINN训练过程中,物理方程与实测数据间的矛盾常常导致权重调节困难,而恰好直击这一痛点,是极具价值的研究方向。其次,同样前景广阔,传统多物理场同时训练效果欠佳,如今分阶段训练方法脱颖而出,成效显著且竞争较小。最后,探索及多任务学习等技术的融合,能实现优势叠加,碰撞出创新火花。

Malaai的博客 1970

十一、机器学习进阶知识:径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

本文对径向基神经网络(RBFNN)的理论基础及建模步骤进行介绍,之后使用Python实现基于RBFNN的数据预测,通俗易懂,适合新手学习,附源码及实验数据集。

weixin_42051846的博客 1万+

关于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万+

KBS投稿全流程拆解:从模板准备到条件接收的实战指南

本文详细拆解了KBS期刊投稿的全流程,从模板准备、投稿系统操作到返修策略和条件接收。重点介绍了Cover Letter撰写技巧、Latex模板选择、审稿周期管理以及返修文件的系统准备方法,帮助研究者高效完成KBS投稿并提升接收概率。

weixin_26938645的博客 703

格式化 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

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2971

基于MATLAB自动发电控制(AGC)仿真系统的设计与实现:电力系统频率稳定与功率平衡的深入解析

自动发电控制(AGC)是电力系统运行中的一个关键功能,其主要任务是通过自动调节发电机组的输出功率,使得电网中的频率稳定在规定范围内,并维持发电与负荷的动态平衡。当电力负荷发生变化时,AGC会立即响应,调整发电机的功率输出,以避免电网频率的剧烈波动。维持系统频率稳定:电网频率通常应维持在标准值(例如50Hz或60Hz)附近。当负荷波动或电力需求突然变化时,AGC通过调节发电机输出,确保频率不发生过大的偏离。实现区域内的功率平衡。

qq_38334677的博客 1110

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

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

Java开源程序猿 5177

SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)

上面在使用OpenOffice实现doc、excel、ppt等文档的管理和预览。除此之外可用kkFileView实现包括且更多文档的预览。

BADAO_LIUMANG_QIZHI的博客 1万+

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/

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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、付费专栏及课程。

余额充值