我的目标是 创建一个可以处理以下两个要求的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类验证时间戳是否在给定范围内达到分钟精度?
该类的输入将是三个参数
我试过这个
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可以提供帮助。有什么建议吗?
答案 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