Tag: iso8601

java.text.Parseexception:Unparseable Date

我有以下代码: String ModifiedDate = “1993-06-08T18:27:02.000Z” ; SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSSZ”); Date ModDate = sdf.parse(ModifiedDate); 即使我的日期格式很好,我也得到以下exception… java.text.ParseException: Unparseable date: “1993-06-08T18:27:02.000Z” at java.text.DateFormat.parse(DateFormat.java:337)

在ISO 8601中识别时区

不,我不是在谈论区域偏移 – 这些区域在一年中可能因基于例如夏令时的区域而变化。 我在谈论IANA维护的实际时区 。 我理解ISO 8601 不支持这些,对吗? 什么平台在支持ISO 8601类似字符串表示中识别时区? 我注意到最新的Java日期/时间库正在使用扩展的ISO 8601格式,例如2011-12-03T10:15:30+01:00[Europe/Paris] 。 (请参阅DateTimeFormatter API 。) 是否有一些融合约定(例如与其他语言和平台)用于扩展ISO 8601以支持时区指定?

解析DateFormat时的Java时区

我有解析日期的代码如下: String ALT_DATE_TIME_FORMAT = “yyyy-MM-dd’T’HH:mm:ss.SSSZ”; SimpleDateFormat sdf = new SimpleDateFormat( ALT_DATE_TIME_FORMAT); Date date = sdf.parse(requiredTimeStamp); 它工作正常,突然,这停止了工作。 事实certificate,管理员在服务器上进行了一些配置更改,并且日期当前正在返回为“2010-12-27T10:50:44.000-08:00”,这是上述模式无法解析的。 我有两个问题: 第一个是什么模式将以上述格式解析JVM返回的日期(具体来说,只是’-08:00’作为时区)? 第二,在Linux RHEL 5服务器上究竟会改变这样的设置,以便我们在将来意识到这些变化?

无法解析ISO 8601格式的字符串,缺少冒号的冒号,到Java 8 Date

我对java 8日期格式/解析function有点沮丧。 我试图找到Jackson配置和DateTimeFormatter来解析”2018-02-13T10:20:12.120+0000″字符串到任何Java 8日期,并没有找到它。 这是java.util.Date示例,它工作正常: Date date = new SimpleDateFormat(“yyyy-MM-dd’T’hh:mm:ss.SSSZZZ”) .parse(“2018-02-13T10:20:12.120+0000”); 相同的格式不适用于新的日期时间api ZonedDateTime dateTime = ZonedDateTime.parse(“2018-02-13T10:20:12.120+0000”, DateTimeFormatter.ofPattern(“yyyy-MM-dd’T’hh:mm:ss.SSSZZZ”)); 我们应该能够以适合FE UI应用程序的任何格式格式化/解析日期。 也许我误解或误解了一些东西,但我认为java.util.Date提供了更多的格式灵活性并且更易于使用。

JSR-310中两个不同的基于周的年度定义的动机是什么?

这些是java.time.temporal包中的两个字段: IsoFields.WEEK_BASED_YEAR WeekFields.ISO.weekBasedYear() ISO-8601定义了除其他两种日期之外的所谓周日期,即通常的日历日期(包括年,月和日)和顺序日期(包括年和年) )。 星期日的格式为YYYY-‘W’ww-e 。 w代表一周的年份,e代表数字ISO-星期几。 Y代表以周为基础的年份,与日历年相同,但在日历年的开始或结束时除外,因为基于周的年份与最终可能在上一年开始的周周期相关。 有两条规则对于理解星期日的形成非常重要: 周总是从周一开始。 日历年的第一周是包含至少四天的一周。 乍一看,两个JSR-310字段看起来都是相同的,因为ISO-8601只提到了一种基于周的年份。 但是,等一下,惊喜。 让我们考虑以下代码示例: LocalDate date1 = LocalDate.of(2000, 2, 29).with(IsoFields.WEEK_BASED_YEAR, 2014); System.out.println(“IsoFields-Test: ” + date1); // output: 2014-03-01 LocalDate date2 = LocalDate.of(2000, 2, 29).with(WeekFields.ISO.weekBasedYear(), 2014); System.out.println(“WeekFields-Test: ” + date2); // output: 2014-02-25 虽然我非常了解第二种变化,但我真的很惊讶看到第一次约会的不同结果是在其类名中使用“官方”ISO-8601引用。 要解释计算结果: 2000-02-29日期对应于ISO-weekdate-notation的2000-W09-2,而2014-02-25对应于2014-W09-2, 保留了一周中的星期和星期几 。 到目前为止很好。 较小字段的这种保留特性类似于如何更改日历年的规则(在大多数情况下应该保持日历日期中的月份和日期不变)。 但结果2014-03-01是什么? 这里算法简单地将相应的周日添加了四天,以便考虑“日期”字段(29对25)的差异。 我没有找到任何关于此行为的来源或官方文档。 有谁知道我们在哪里可以找到这两个领域之间差异的理由? 有关算法行为的任何文档? […]

Java 8日期和时间:解析偏移中没有冒号的ISO 8601字符串

我们尝试使用时区偏移量解析以下ISO 8601 DateTime字符串: final String input = “2022-03-17T23:00:00.000+0000”; OffsetDateTime.parse(input); LocalDateTime.parse(input, DateTimeFormatter.ISO_OFFSET_DATE_TIME); 由于时区偏移中的冒号,两种方法都失败(这有意义,因为OffsetDateTime也使用DateTimeFormatter.ISO_OFFSET_DATE_TIME )。 java.time.format.DateTimeParseException:无法在索引23处解析文本’2022-03-17T23:00:00.000 + 0000′ 但根据维基百科 ,有4种有效的时区偏移格式: Z ±hh:mm ±hhmm ±hh 其他框架/语言可以解析这个字符串而没有任何问题,例如Javascript Date()或Jacksons ISO8601Utils (他们在这里讨论这个问题) 现在我们可以使用复杂的RegEx编写自己的DateTimeFormatter ,但在我看来, java.time库应该能够默认解析这个有效的ISO 8601字符串,因为它是有效的。 目前我们使用Jacksons ISO8601DateFormat ,但我们更愿意使用官方的date.time库来使用。 你有什么方法可以解决这个问题?

如何从Java中的ISO8601周数计算日期

有没有办法做到这一点: 如何获得一周的日期(我知道周数)? 对于ISO 8601 周数而不使用Java中的任何库或日历?