java.lang.IllegalArgumentException:格式无效:“2018-08-24T��:��:��”在“��:��:��”处格式错误

java.lang.IllegalArgumentException: Invalid format: "2018-08-24T��:��:��" is malformed at "��:��:��"

前端发送的日期格式无效,我收到此异常:

Caused by: java.lang.IllegalArgumentException: Invalid format: "2018-08-24T��:��:��" is malformed at "��:��:��" at org.joda.time.format.DateTimeParserBucket.doParseMillis(DateTimeParserBucket.java:187) at org.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:826) at org.joda.time.convert.StringConverter.getInstantMillis(StringConverter.java:65) at org.joda.time.base.BaseDateTime.(BaseDateTime.java:173) at org.joda.time.DateTime.(DateTime.java:257)

基本上我想检查时间戳是否有任何格式错误的数据。如果是,我想将它设置为 0。例如日期时间是 2018-08-24T��:��:�� 我想将它设置为 2018-08-24T00:00:00

你已经完成了一半。

try {
 .. your code that parses the FED input
} catch ( IllegalArgumentException e) {
 .. do further checking

意思是:当您收到来自您的来源的错误输入时,这个例外已经给了您一个例外。在这种情况下,您可以对传入的字符串进行简单的 substring() 或正则表达式检查。如果它是“4digits dash 2 digits dash 2 digits”...那么你得到了一个日期,并且可以手动创建一个相应的对象,并将时间值填写为全 0 例如。