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

如何制作一个可以接受结尾垃圾的DateTimeFormatter?

孔寒
2023-03-14
问题内容

我正在对旧的一些SimpleDateFormat代码进行改造,以使用新的Java 8 DateTimeFormatter
SimpleDateFormat,因此旧代码会接受日期之后的字符串,例如“
20130311nonsense”。在DateTimeFormat创建我抛出了一个DateTimeParseException为这些字符串,这可能是做正确的事情,但我想保持兼容性。我可以修改我的方式DateTimeFormat以接受这些字符串吗?

我目前正在这样创建它:

DateTimeFormatter.ofPattern("yyyyMMdd")

问题答案:

使用采用的parse()方法ParsePosition,因为当它不读取整个文本时,它不会失败:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");

TemporalAccessor parse = formatter.parse("20140314 some extra text", new ParsePosition(0));
System.out.println(LocalDate.from(parse));

ParsePosition您传递的实例也会在解析停止的位置进行更新,因此,如果您需要对剩余的文本进行某些操作,则在调用之前将其分配给变量会很有用parse



 类似资料:
  • 问题内容: 有人可以解释一下G1垃圾收集器的工作原理吗?我还无法在任何地方找到任何全面,易于理解的描述。 谢谢 问题答案: 收集器将堆分成固定大小的区域,并跟踪这些区域中的实时数据。它将一组指针(“记住的集”)保留在区域内和区域外。当认为有必要使用GC时,它将首先收集实时数据较少的区域(因此,“垃圾优先”)。通常,这意味着一步就可以收集整个区域:如果进入一个区域的指针数量为零,则无需对该区域进行标

  • 问题内容: 说我有一堂课 然后可以按如下方式解析有效的json: 如果字符串包含的数据多于解析对象所需的数据,是否有办法使解析器失败? 例如,我希望以下操作失败(成功) 我使用带有JsonParser.Feature.AUTO_CLOSE_SOURCE = false的InputStream尝试了此操作,并检查该流是否已被完全消耗,但这不起作用: 那是, 仍然成功,可能是因为解析器从流中消耗了超出

  • 问题内容: JavaScript中的垃圾回收如何工作?它类似于.NET垃圾回收吗?难道是因为人们在VBScript中实现垃圾回收很不好,所以人们避免了垃圾回收并建立了对JavaScript作为其标准客户端语言的偏好? 问题答案: 垃圾收集如何工作? 简短的答案是:当某个内存块(例如某个对象)不再可访问时,有资格回收它。何时,如何回收或是否回收它完全取决于实现,并且不同的实现方式也不同。但是在语言级

  • 工作在别人写的糟糕的代码上是常有的事。不要把他们想得太糟,直到你用他们的鞋子走路时。他们可能被要求非常自觉地快速完成一些东西来满足时间表的压力。不管之前发生了什么,为了在不清晰的代码上工作,你必须理解它。理解它需要花费一些学习时间,你必须坚持从时间表中某些部分划出一部分时间来做这件事。为了理解它们,你必须读源代码,你可能需要在上面做一些实验。 即使是为你自己,编写文档也是一个好的时机,因为尝试为你

  • 问题内容: 因此,我正在远程容器上查看带有jmap的堆,并且我想对其进行强制垃圾收集。如何在不弹出jvisualvm或jconsole和朋友的情况下执行此操作? 我知道您不应该进行强制垃圾回收的实践-您应该弄清楚为什么堆很大/越来越大。 我还意识到System.GC()实际上并没有强制垃圾回收-它只是告诉GC您希望它发生。 话虽如此,有没有一种方法可以轻松地做到这一点?我缺少一些命令行应用程序?

  • 问题内容: 即使很棘手,也可以在Java中强制进行垃圾回收吗?我知道;,;但是他们只建议做GC。我该如何强制GC? 问题答案: 最好的选择是调用,这只是向垃圾收集器提示你要它进行收集。由于垃圾收集器是不确定的,因此无法强制立即收集。