如何在 Java 中验证 DateTime 字符串格式"2018-01-22T18:23:00.000Z"?



我需要在代码中验证DateTime字符串2018-01-22T18:23:00.000Z的格式是否有效。

REGEX解决方案或其他任何解决方案都很好。有人可以帮助我这样做吗?

2018-01-22T18:23:00.000Z是即时的ISO 8601格式。因此,您可以只使用Instant.parse("2018-01-22T18:23:00.000Z")。从字符串无效的情况下捕获DateTimeParseException,因为它的格式错误,或者日期和时间无效(例如13个月或小时25个月(。它也将接受2018-01-22T18:23Z2018-01-22T18:23:00.000000000Z。对于大多数目的,这应该是可以的,因为它仍然允许在ISO 8601标准中。

您可能需要添加范围检查。对于您的申请,可能瞬息万变的瞬间或未来应该被认为是无效的。使用Instant.isBefore()和/或Instant.isAfter()

不要使用正则表达式。编写和非常非常非常非常复杂的书籍将很复杂,以了解维护您的代码的人。如果您确实需要更详细的语法验证,请使用Akshay Batra答案中已经提到的DateTimeFormatter

创建一个称为"格式"的字符串,然后在此处放置所需的格式。之后,尝试以下代码,并检查DT是否返回任何内容

DateTimeFormatter formatter = DateTimeFormat.forPattern(format);//required format
LocalDateTime dt = formatter.parse(oldstring);

最新更新