当前位置: 首页 > 面试题库 >

如何将UTC偏移量dateformat字符串解析为以|分隔的结果日期 符号

沈琛
2023-03-14
问题内容

我有一个非常特殊的问题,我试图在哪里解析"2019-12-25T17:00:00-05:00" ,以便它可以给我结果DEC 12 | Thursday | 5:00pm

我通过使用DateTimeFormatter和尝试了以下代码LocalDate

DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz", Locale.US);
                DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM d | E | hh:mm a", Locale.US);
                LocalDate date = LocalDate.parse("2019-12-25T17:00:00-05:00", inputFormatter);
                String formattedDate = outputFormatter.format(date);
                contentTextView.setText(formattedDate);

但是它崩溃了 DateTimeParseException: Text '2019-12-25T17:00:00-05:00' could not be parsed at index 19

知道为什么会崩溃以及我的输出是否可以提供预期的结果吗?谢谢!


问题答案:

您的String 2019-12-25T17:00:00-05:00表示UTC带有偏移UTC
offset的
时区,因此OffsetDateTime用于解析该字符串

OffsetDateTime odt = OffsetDateTime.parse("2019-12-25T17:00:00-05:00");

System.out.println(odt.format(DateTimeFormatter.ofPattern("MMM d | E | hh:mm a", Locale.US)));

如果您想设置特定的时区,可以使用atZoneSameInstant传递ZoneIdeaxmple

ZoneId zone = ZoneId.of("America/Chicago");
ZonedDateTime zdt = odt.atZoneSameInstant(zone);


 类似资料:
  • 我正在将字符串类型的日期解析成日期格式,但每次都出现了这个异常 我的代码是:

  • 问题内容: 给定以下字符串:如何将其转换为对象? 阅读后,我觉得这应该可以,但是不行。 应该注意的是,这没有问题: 但是我坚持下去。我宁愿完全转换它,而不以任何方式更改(或切片)它。 问题答案: 看起来strptime并不总是支持。Python似乎只是调用C函数,而您平台上不支持strptime 。 注意: 从Python 3.2开始,它将始终有效。

  • 问题内容: 我有一个字符串,我正在尝试将其解析为一个数字。我尝试使用,结果为2。我猜逗号是问题所在,但我将如何以正确的方式解决此问题?只需删除逗号? 问题答案: 是的,删除逗号:

  • 问题内容: 如何将下面的日期字符串解析为一个Date对象? 引发异常… 问题答案: 模式是错误的。您有3个字母的天的缩写,因此必须为。您有3个字母的月份缩写,因此必须为。由于这些日和月的缩写对语言环境敏感,因此您也希望将语言环境明确指定为英语,否则它将使用平台默认语言环境,而语言环境本身可能不是英语。 这在这里打印 根据我的时区是正确的。 如果您不想使用代替,我也会重新考虑。阅读javadoc以获

  • 问题内容: 我有这样的日期和时间的字符串:。我对日期/时间格式了解不多,但是我认为,如果我错了,请纠正我,这就是它的UTC格式。 我的问题:用Java将其解析为更常规格式的最简单方法是什么? 问题答案: 您拥有的是ISO-8601日期格式,这意味着您可以只使用SimpleDateFormat 然后,您可以只使用SimpleDateFormat.parse()。另外,这是一篇博客文章,其中包含一些可

  • 问题内容: 该java.util.Date 方法显示当地时区的日期。 在几种常见的情况下,我们希望以UTC格式打印数据,包括日志,数据导出以及与外部程序的通信。 在UTC中创建String表示形式的最佳方法是什么? 如何用更好的格式替换无法排序的juDate 格式(感谢@JonSkeet!)? 附录 我认为以自定义格式和时区打印日期的标准方法非常繁琐: 我一直在寻找像这样的单线: 问题答案: 遵循