java - Java 是否有一个好的*严格*日期解析器?

标签 java datetime parsing strict

Java 是否有一个好的、严格 的日期解析器?我可以访问 Joda-Time,但我还没有看到这个选项。我发现了“Is there a good date parser for Java”这个问题,虽然这是相关的,但有点相反。虽然这个问题要求一个宽松的、更模糊的逻辑并且容易出现人为错误的解析器,但我想要一个严格的解析器。例如,对于 JodaTime(据我所知)和 simpleDateFormat,如果您的格式为“MM/dd/yyyy”:

解析这个:40/40/4353

这成为一个有效的日期。我想要一个知道 40 是无效月份和日期的解析器。肯定在 Java 中存在一些实现?

最佳答案

我没看到 Joda将其识别为有效日期。示例:

strict = org.joda.time.format.DateTimeFormat.forPattern("MM/dd/yyyy")
try {
    strict.parseDateTime('40/40/4353')
    assert false
} catch (org.joda.time.IllegalFieldValueException e) {
    assert 'Cannot parse "40/40/4353": Value 40 for monthOfYear must be in the range [1,12]' == e.message
}



据我所知,DateFormat 也没有与 setLenient(false) .示例:

try {
    df = new java.text.SimpleDateFormat('MM/dd/yyyy')
    df.setLenient(false)
    df.parse('40/40/4353')
    assert false
} catch (java.text.ParseException e) {
    assert e.message =~ 'Unparseable'
}

希望这对您有所帮助!

关于java - Java 是否有一个好的*严格*日期解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489538/

相关文章:

python - 为什么 numpy/pandas 解析长行的 csv 文件这么慢?

java - JBoss 6.1 + 永久代空间

mysql - 如何编写用于在 sqlite 数据库中拆分、提取的选择查询?

java - 两个Fragment之间的接口(interface)通信

javascript - 在 Meteor 中使用 moment.tz.setDefault() 的范围是什么?

php - 如何在strtotime中写一个full time?

c# - 将克罗地亚语日期字符串解析为 DateTime

java - 在Java中解析html页面后获取节点的样式信息(css)

java - 什么是NullPointerException,我该如何解决?

java - 比较两个嵌套的 HashMap