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

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 “陷阱“

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

    31630

    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

    还在使用 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

    60420

    节假日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.6K20

    了解一下ISO 8601是什么

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

    7.2K30

    还在使用 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); } 如上代码,仅在需要用到地方创建一个实例,就没有线程安全问题,不过也加重了创建对象负担,会频繁地创建和销毁对象

    44030

    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.5K20

    通过反向 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这个类,是可以重新设置时间,这对于一些类内部属性来说,是非常不安全

    25010

    玩转 Java 时间 + 面试题

    ,提供了几个类,用于操作时间和日期,它们分别是:LocalTime、LocalDateTime、Instant,都位于 java.time 包下。...:2019-08-16 21:46:22 SimpleDateFormat 构造参数含义,请参考以下表格信息: 字符 含义 示例 y 年 yyyy-1996 M 月 MM-07 d 月中天数 dd-...02 D 年中天数 121 E 星期几 星期四 H 小时数(0-23) HH-23 h 小时数(1-12) hh-11 m 分钟数 mm-02 s 秒数 ss-03 Z 时区 +0800 使用示例:...因为查看 SimpleDateFormat 源码可以得知,所有的格式化和解析,都需要通过一个中间对象进行转换,这个中间对象就是 Calendar,这样的话就造成非线程安全。...,提供了多线程下线程安全和易用性,让我们可以更好操作时间。

    1.1K40

    为什么建议使用你LocalDateTime,而不是Date?

    通过阅读本篇文章你将了解到: 为什么需要LocalDate、LocalTime、LocalDateTime【java8提供类】 java8时间API使用方式,包括创建、格式化、解析、计算、修改...为什么需要LocalDate、LocalTime、LocalDateTime Date如果不格式化,打印出日期可读性差 Tue Sep 10 09:34:04 CST 2019 使用SimpleDateFormat...对时间进行格式化,但SimpleDateFormat是线程不安全 SimpleDateFormatformat方法最终调用代码: private StringBuffer format(Date date...、日 时间计算 比如有些时候想知道这个月最后一天是几号、下个周末是几号,通过提供时间和日期API可以很快得到答案。...,可以通过DateTimeFormatterofPattern方法创建自定义格式化方式。

    1.4K10

    什么在代码中要求我们使用LocalDateTime而不是Date?

    通过阅读本篇文章你将了解到: 为什么需要LocalDate、LocalTime、LocalDateTime【java8提供类】; java8时间API使用方式,包括创建、格式化、解析、计算、...# 为什么需要LocalDate、LocalTime、LocalDateTime 1.Date如果不格式化,打印出日期可读性差 Tue Sep 10 09:34:04 CST 2019 2.使用SimpleDateFormat...、日 时间计算 比如有些时候想知道这个月最后一天是几号、下个周末是几号,通过提供时间和日期API可以很快得到答案 LocalDate localDate = LocalDate.now();LocalDate...,可以通过DateTimeFormatterofPattern方法创建自定义格式化方式 解析时间 LocalDate localDate1 = LocalDate.parse("20190910",...•001:《Java并发高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes

    1.1K20
    领券