首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JDK7- SimpleDateFormat vs JDK8-DateTimeFormatter,"2019 02“可以与旧的解析,但不能与新的解析

JDK7中的SimpleDateFormat和JDK8中的DateTimeFormatter是Java中用于日期时间格式化和解析的工具类。它们有一些区别和优势,以及适用的场景。

SimpleDateFormat是JDK7引入的类,用于日期时间的格式化和解析。它基于模式字符串来定义日期时间的格式,例如"yyyy-MM-dd"表示年份-月份-日期的格式。然而,SimpleDateFormat存在线程安全性的问题,不适合在多线程环境中使用。此外,SimpleDateFormat的性能相对较低。

而在JDK8中引入了DateTimeFormatter类,用于替代SimpleDateFormat。与SimpleDateFormat不同,DateTimeFormatter是不可变的,因此在多线程环境下更加安全。它还提供了更丰富的模式字符和功能,能够更灵活地处理日期时间的格式化和解析需求。此外,DateTimeFormatter的性能也相对较高。

对于给定的"2019 02"字符串,JDK7中的SimpleDateFormat可以进行解析,但需要注意格式匹配的问题。因为"2019 02"不符合标准的日期时间格式,需要根据具体需求设置合适的模式字符串进行解析。

对于新的解析,即使用JDK8中的DateTimeFormatter进行解析,可以使用以下代码示例:

代码语言:txt
复制
String input = "2019 02";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM");
LocalDate date = LocalDate.parse(input, formatter);

上述代码中,我们定义了模式字符串"yyyy MM",表示年份-月份的格式。然后使用DateTimeFormatter的静态方法ofPattern创建了一个格式化对象。最后,使用parse方法将字符串"2019 02"解析为LocalDate对象。

需要注意的是,JDK8中的DateTimeFormatter提供了更严格的日期时间格式匹配,因此对于非标准格式的字符串,需要确保模式字符串与输入字符串完全匹配,否则会抛出DateTimeParseException异常。

对于云计算领域或其他应用场景中的时间处理需求,可以考虑使用腾讯云提供的相关产品,例如腾讯云函数(云原生)、腾讯云数据库(数据库)、腾讯云CVM(服务器运维)等。具体推荐的产品和介绍链接地址可以根据实际需求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 基础概念·Java 日期与时间

现在我们只需要记住:因为 SimpleDateFormat 不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。而 DateTimeFormatter 可以只创建一个实例,到处引用。...旧 API 转新 API 如果要把旧式的 Date 或 Calendar 转换为新 API 对象,可以通过 toInstant() 方法转换为 Instant 对象,再继续转换为 ZonedDateTime...,旧的 TimeZone 提供了一个 toZoneId(),可以把自己变成新的 ZoneId。...新 API 转旧 API 如果要把新的 ZonedDateTime 转换为旧的 API 对象,只能借助 long 型时间戳做一个“中转”: // ZonedDateTime -> long: ZonedDateTime...下表是数据库类型与 Java 新旧 API 的映射关系: 数据库 对应 Java 类(旧) 对应 Java 类(新) DATETIME java.util.Date LocalDateTime DATE

5.1K30
  • 为什么不建议使用Date,而是使用Java8新的时间和日期API?

    Java 8:新的时间和日期API 在Java 8之前,所有关于时间和日期的API都存在各种使用方面的缺陷,因此建议使用新的时间和日期API,分别从旧的时间和日期的API的缺点以及解决方法、Java 8...新的时间和日期API进行讲解。...Thu Sep 12 13:47:34 CST 2019 可以使用 SimpleDateFormat 对时间进行格式化,但 SimpleDateFormat 是线程不安全的,SimpleDateFormat...calb中中属性设置cal 返回设置好的cal对象 但是这三步不是原子操作,导致解析出来的时间可以是错误的。...和 parse 方法的地方进行加锁 => 线程阻塞性能差 使用 ThreadLocal 保证每个线程最多只创建一次 SimpleDateFormat 对象 => 较好的方法 Java 8 新的时间和日期

    2K30

    你有没有掉进去过这些 BigDecimal 和 DateFormatter 的“陷阱“

    是一个以与语言环境有关的方式来格式化和解析日期的具体类。...它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。使用SimpleDateFormat的format方法,将一个Date类型转化成String类型,并且可以指定输出格式。...在使用 SimpleDateFormat 时可以解析大于或者等于定义的时间精度,但不能解析小于它定义的时间精度,并且 SimpleDateFormat 是线程不安全的,在多线程环境下操作会抛出异常。...System.out.println((simpleDateFormat).parse(date_02)); } } 执行上述代码,输出结果如下: 在解析精度较小的时间时出现了报错...解决 SimpleDateFormat 是线程不安全的方式有: 定义为一个局部变量,局部变量不会受多线程的影响 使用 ThreadLocal 可以保存各自线程中共独立的数据,互相不会收到干扰,但是需要维护

    32330

    如何替代旧的Date与Calendar?

    如何替代旧的Date与Calendar? 粉丝提问: Java开发中,时间处理一直是个痛点。Date和Calendar使用复杂,如何更优雅地替代它们?java.time包提供了什么新特性?...在本文中,猫头虎将带你全面了解java.time包的核心特性、使用方法,以及如何用它替代旧的Date与Calendar类,帮助你轻松处理时间与日期问题。 正文 一、为什么需要java.time包?...DateTimeFormatter.ofPattern() 三、如何替代旧的Date与Calendar?...日期格式化 旧方式:使用SimpleDateFormat格式化日期 import java.text.SimpleDateFormat; import java.util.Date; public class...A:使用DateTimeFormatter的ofPattern方法进行解析。 六、总结与趋势 java.time包彻底革新了Java时间与日期处理: 提高了开发效率,简化了复杂的API调用。

    16910

    日期格式化与解析:如何使用DateTimeFormatter处理不同格式的日期与时间?

    日期格式化与解析:如何使用DateTimeFormatter处理不同格式的日期与时间? 粉丝提问: 在Java中,如何用DateTimeFormatter处理日期和时间的格式化与解析?...是否可以支持自定义格式? 本文将详细讲解DateTimeFormatter的功能,并通过丰富的示例演示如何高效地格式化和解析日期与时间,包括自定义格式的应用。...正文 一、DateTimeFormatter简介 DateTimeFormatter是Java 8引入的时间格式化与解析工具,代替了旧的SimpleDateFormat,解决了以下问题: 线程安全:DateTimeFormatter...兼容旧的日期格式 如果需要解析或格式化旧格式的日期,可以结合java.util.Date与java.time的转换方法。...A: DateTimeFormatter是线程安全的,而SimpleDateFormat需要手动加锁。 DateTimeFormatter与新时间API集成更好,支持不可变操作。

    59710

    还在使用 SimpleDateFormat?你的项目崩没?

    主要是用它进行时间的格式化输出和解析,挺方便快捷的,但是SimpleDateFormat并不是一个线程安全的类。在多线程情况下,会出现异常,想必有经验的小伙伴也遇到过。...因为我们声明SimpleDateFormat为static变量,那么它的Calendar变量也就是一个共享变量,可以被多个线程访问。...假设线程A执行完calendar.setTime(date),把时间设置成2019-01-02,这时候被挂起,线程B获得CPU执行权。...("yyyy-MM-dd HH:mm:ss"); return sdf.parse(strDate);} 如上代码,仅在需要用到的地方创建一个新的实例,就没有线程安全问题,不过也加重了创建对象的负担...复仇者联盟与IntelliJ IDEA也很配哦 号外:最近整理了之前编写的一系列内容做成了PDF,关注我并回复相应口令获取: - 001 :领取《Spring Boot基础教程》 - 002 :领取《Spring

    61320

    Java中时间日期的操作

    所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。 ...对于解析来说,两种形式都是可接受的,与模式字母的数量无关。Number: 对于格式化来说,模式字母的数量是最小的数位,如果数位不够,则用 0 填充以达到此数量。...因此,在相同的模式下, “01/02/3” 或 “01/02/003” 解释为公元 3 年 1 月 2 日。同样,”01/02/-3” 解析为公元前 4 年 1 月 2 日。 ...格式是与语言环境无关的,并且数字必须取自 Unicode 标准的 Basic Latin 块。 对于解析来说,RFC 822 time zones 也是可接受的。...在这些字符串中,以上所述的模式字母可以用其他与语言环境有关的模式字母来替换。SimpleDateFormat 不处理除模式字母之外的文本本地化;而由类的客户端来处理。

    3.4K20

    节假日API调用失效,看我如何解决!

    作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!...例如我在浏览器上的url上输入https://timor.tech/api/holiday/info/2019-01-01 然后就可以看到在页面上返回如下的结果: ?...好吧,背景确实就是黑的,但不感觉结果没了吗? ? 行吧,那我试试昨天给大伙展示的Kettle程序 ? ?...那还等啥,直接改JS代码 // 初始化日期 var initDate = "2019-01-01"; // 变量N 天(编号) var add = 1; // 设置日期的格式 var simpleDateFormat...// 日期+1 calendar.add(java.util.Calendar.DAY_OF_MONTH,DayNum); // 最新的时间: 例如 2000-01-02 /* 2.

    2.7K20

    了解一下ISO 8601是什么

    ,毕竟他代表了国际通用的日期时间格式,找了一些旧的标准原则,虽然不是最新的,但是原则上,应该比较相近,只是大概了解下,如果要精确的标准定义,建议还是找最新的文档, 日期和时间值按从最大到最小的时间单位排序...如果没有指定与UTC关系则假定是本地时间,为安全的跨时区通讯,应制定与UTC关系。若时间是UTC则在时间后面加Z表示,如“09:30UTC”表示为09:30Z”或“0930Z”。...、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC...所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。...www.joda.org/joda-time/),其默认格式就是ISO8601,可以直接用DateTime,当然还可以使用日期格式串解析,他还支持其他一些日期时间的便捷操作,另外像Apache-DateUtils

    7.6K31

    还在使用 SimpleDateFormat?你的项目崩没?

    主要是用它进行时间的格式化输出和解析,挺方便快捷的,但是SimpleDateFormat并不是一个线程安全的类。在多线程情况下,会出现异常,想必有经验的小伙伴也遇到过。...因为我们声明SimpleDateFormat为static变量,那么它的Calendar变量也就是一个共享变量,可以被多个线程访问。...假设线程A执行完calendar.setTime(date),把时间设置成2019-01-02,这时候被挂起,线程B获得CPU执行权。...解决方案 只在需要的时候创建新实例,不用static修饰 public static String formatDate(Date date) throws ParseException { SimpleDateFormat...HH:mm:ss"); return sdf.parse(strDate); } 如上代码,仅在需要用到的地方创建一个新的实例,就没有线程安全问题,不过也加重了创建对象的负担,会频繁地创建和销毁对象

    44330

    JSR310新日期API(三)-日期时间格式化与解析

    对于非线程安全这个问题也有解决方案: 方案一:把SimpleDateFormat实例封闭在方法中,也就是调用的时候才创建,这样虽然导致了资源浪费,但是可以避免并发问题。...// 某个时刻的输出如下 2019-01-03 23:32:05 Thu Jan 03 23:32:05 CST 2019 2019-01-03 对于Java旧有的日期时间类,SimpleDateFormat...从理论上来看,如果能够熟练使用上面分析过的规则,那么可以格式化或者反向解析任意格式的日期时间或者字符串。...DateTimeFormatter类型,那么必定是一个新的实例。...2019年01月05日 16时28分01秒 2019年01月05日 16时28分01秒 字符串反解析为日期时间类型的(parse)方法并不存在于DateTimeFormatter类中,parse方法存在于日期时间类自身之中

    1.6K20

    通过反向 SSH 隧道连接 RDP

    22 检测发现设置为密码永不过期的用户 通常来说我们会把一个服务账户的密码设置为永不过期,但不会对用户密码这么做。另外将域内管理员类的用户的密码设置为永不过期也是不正常的。...UAC值以及新的UAC值进行过滤。...我们寻找以下的新旧 UAC 值组合: 旧 UAC 值: 0x10 -> 新 UAC 值: 0x210 旧 UAC 值: 0x11 -> 新 UAC 值: 0x210 旧 UAC 值: 0x15...用例 6:向一个已知的动态域名解析服务发起请求 在此用例中,我们要通过一个已知动态域名解析服务列表与所有A记录查询请求进行比对,一个列表例子 https://gist.githubusercontent.com...你可以看到的是,所有与本地回环地址的 3389 的通信都被记录下来了。 另一个细节是,通过 ssh 隧道登陆时,失败的登陆事件(事件 id 4625)将不会被记录下来。

    3.3K20

    使用SimpleDateFormat的时候小心点

    SimpleDateFormat是Java提供的一个格式化和解析日期的工具类,日常开发中应该经常会用到,但是由于它是线程不安全的,多线程公用一个SimpleDateFormat实例对日期进行解析或者格式化会导致程序出错...CalendarBuilder的实例calb中; 2、使用calb中解析好的日期数据设置calendar; 3、重置日期对象cal的属性值; 4、使用calb中中属性设置cal; 5、返回设置好的cal...第一种方式: 每次使用时候new一个SimpleDateFormat的实例,这样可以保证每个实例使用自己的Calendar实例,但是每次使用都需要new一个对象,并且使用后由于没有其它引用,就会需要被回收...使用新的API,整个转换过程都不需要考虑线程安全的问题。...SimpleDateFormat这个类不是线程安全的,在使用的时候稍不注意,就会产生致命的问题。Date这个类,是可以重新设置时间的,这对于一些类内部的属性来说,是非常不安全的。

    26410
    领券