0

我的目标是创建一个可以处理以下两个要求的 java 类

(A) 1. 验证时间戳的格式是否与预期格式匹配。
CCYY-MM-DD'T'hh:mm:ss'.0000000000+'uh:um"
例如:预期的格式不是静态的。它可能是这些“2013-09-10T18:30:20.123456+10: 00”或“2013-09-10T18:30:20.123+10:00”。
我不关心精度和价值。只有格式很重要。

(B) 2.验证时间戳是否在一定范围内。
例如:验证时间戳是否在“2013-09-10 18:27”和“2013-09-10 18:33”之间。(验证仅达到分钟级精度)(可能是 + 或 - 2 分钟的增量)

第一个目标的问题发布在这里 Java:自定义时间戳格式:验证格式到微秒精度

关于第二个目标: 问题:

如何使用Java类验证时间戳是否在给定的分钟精度范围内?

类的输入将是三个参数

  1. 要验证为字符串的时间戳
  2. 作为字符串的下限时间戳
  3. 更大范围的时间戳作为字符串。

我试过这个

String date = "2013-09-10T18:30:12.123456789+10:00"
SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmm"); 
date = date.substring(0,22)+"+10:00"; 
Date newDate = df.parse(date); 
timestamp_value = df2.format(newDate);

timestamp_value 现在是 201309101830
检查 timestamp_value 是否大于 201309101827。
检查 timestamp_value 是否小于 201309101833
这没关系。

但是,我觉得这是实现它的粗略方式,所以我想知道是否有更好的解决方案。如果我可以转换为 Timestamp 对象,我认为 .before 和 .after 可以提供帮助。有什么建议么 ?

4

1 回答 1

0

1) "2013-09-10T18:30:20.123+10:00" 是 XSD dateTime 格式,最好的解析方法是这样

XMLGregorianCalendar xgc = javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(date);

如果日期格式错误,将抛出 IllegalArgumentException

2)验证时间戳是否在一定范围内,最简单的方法是从日期获取毫秒,截断到分钟并使用算术比较 t >= from - delta && t <= to + delta

于 2013-09-16T05:53:13.063 回答