Java:自定义时间戳格式:验证值范围到分钟精度

时间:2013-09-16 05:39:23

标签: java timestamp

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

(A)1。验证时间戳的格式是否与预期格式匹配。
CCYY-MM-DD'T'hh:MM:ss'.0000000000 +“恩:嗯”
例如:预期的格式     不是一成不变的。它可能是其中之一     “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”之间。 (验证仅达到微小级精度)(可能是+或 - 2min的增量)

关于第一个目标的问题已在此处公布 Java : Custom Timestamp Format : verify format to microsec precision

参考第二个目标: 问题:

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

该类的输入将是三个参数

  1. 要作为字符串验证的时间戳
  2. 较低范围的时间戳为字符串
  3. 更高范围的时间戳为字符串。
  4. 我试过这个

    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可以提供帮助。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

1)“2013-09-10T18:30:20.123 + 10:00”是XSD日期时间格式,解析它的最佳方法是

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

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

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