Tag: datetime parsing

Java 8 DateTimeFormatter解析不同重要性的可选小数秒

我的MCVE (作为TestNGunit testing): public class MyDateTimeFormatterTest { private static final String BASE_PATTERN = “yyyy/MM/dd HH:mm:ss”; private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(BASE_PATTERN + “[.SSSSSSSSS]”); private static final LocalDateTime TEST_INPUT = LocalDateTime.of(2015, 5, 4, 12, 34, 56, 123456789); @DataProvider(name = “test-cases”) public Iterator getTestCases() { return Arrays.asList(testFor(“”, ChronoUnit.SECONDS), testFor(“.SSS”, ChronoUnit.MILLIS), testFor(“.SSSSSS”, ChronoUnit.MICROS), testFor(“.SSSSSSSSS”, ChronoUnit.NANOS)).iterator(); } @Test(dataProvider […]

如何从ISO 8601格式字符串中选择时区到日历实例中

作为输入,我有一个字符串,它是ISO 8601中表示日期的字符串。 例如: “2017-04-04T09:00:00-08:00” String的最后一部分,即“-08:00”表示TimeZone Offset。 我将此字符串转换为Calendar实例,如下所示: Calendar calendar = GregorianCalendar.getInstance(); Date date = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss’Z'”, Locale.US).parse(iso8601Date); calendar.setTime(date); iso8601Date是“2017-04-04T09:00:00-08:00” 但这并没有选择时区,如果我从Calendar实例获取时区,它会提供当前设置的笔记本电脑实例,并且不会从ISO 8601字符串中获取时间戳。 我通过日历实例检查时区为: calendar.getTimeZone().getDisplayName() 有人可以在Calendar实例中显示如何选择时区吗?

Android转换日期时间解析错误(甚至尝试了joda时间)

我正在解析许多新闻源,每个项目的pubDate遵循相同的格式: 2017年6月11日星期日太阳18:18:23 +0000 不幸的是,一个Feed没有: 2017年6月10日星期六美国东部时间12:49:45 我试图使用androids java date和SimpleDateFormat来解析日期并没有运气: try { Calendar cal = Calendar.getInstance(); TimeZone tz = cal.getTimeZone(); SimpleDateFormat readDate = new SimpleDateFormat(“EEE, d MMM yyyy HH:mm:ss Z”); readDate.setTimeZone(TimeZone.getTimeZone(“UTC”)); Date date = readDate.parse(rssDateTime); SimpleDateFormat writeDate = new SimpleDateFormat(“EEE, d MMM yyyy HH:mm:ss Z”); writeDate.setTimeZone(tz); parsedDate = writeDate.format(date); } catch (ParseException e) { e.printStackTrace(); } 哪个引发错误: […]

日期时间解析错误

我在Java中解析日期时遇到问题。 以下是代码。 String dateString = “2017-12-13T16:49:20.730555904Z”; List formatStrings = Arrays.asList(“yyyy-MM-dd’T’HH:mm:ss’Z'”, “yyyy-MM-dd’T’HH:mm:ss.SSSSSSSSS’Z'”); for (String formatString : formatStrings) { try { SimpleDateFormat formatter = new SimpleDateFormat(formatString); formatter.setTimeZone(TimeZone.getTimeZone(“UTC”)); Date d = formatter.parse(dateString); System.out.println(“Format is:” + formatString); System.out.println(“Orignal Date: ” + d); System.out.println(“Orignal MS: ” + d.getTime()); return d; } catch (ParseException e) {} } return null; } 当我运行这个程序时,我得到以下输出。 […]

Java:日期解析,为什么我会收到错误

Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SZ”);//2018-02-05T18:00:51.001+0000 String text = dateFormat.format(date); Date test = dateFormat.parse(text); 前三行很好。 当我尝试再次将字符串解析为日期时,我收到错误。 我怎么解决这个问题? 错误如下所示: Caused by: java.text.ParseException: Unparseable date: “2018-02-07T15:32:13.214+0100” at java.text.DateFormat.parse(DateFormat.java:366) ~[na:1.8.0_151] at TimeRange.parseDateFromIsoString(TimeRange.java:33) ~[classes/:na]

如何在Android中解析“yyyy-MM-dd’T’HH:mm:ss.SSSXXX”日期格式到简单?

如何在Android中解析此日期2018-01-09T11:11:02.0+03:00到dd.MM.yyyy hh:mm格式? 09和11之间的T是什么意思? 谢谢。 我不知道后端开发人员是如何获得这种格式的。 我正在使用Java。

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库来使用。 你有什么方法可以解决这个问题?