测试时间格式HH:MM:SS.sss

时间:2017-05-18 01:56:59

标签: java testing simpledateformat

所以我编写了一个代码,用于测试输入是否采用HH:MM:SS.sss的正确时间格式,以便正确检查我运行四个不同的输入,三个应该返回false和一个应该返回True,但由于某种原因,当我输入正确的格式时,我得到一个" Java.text.ParseExcetion数据:" 02:26:13.125""它返回false。我做错了什么或错过了什么?这是我的代码

new Date(2017,4,18).valueOf()/1000 - new Date(2017,4,18).getTimezoneOffset()*60

2 个答案:

答案 0 :(得分:1)

在您的日期模式中,需要使用大写" SSS"指定毫秒:

    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss.SSS");

另外,请注意使用小写" hh"意味着小时表示为1 - 12(12小时制)。如果小时表示为0 - 23(24小时制),则需要使用大写" HH"。

答案 1 :(得分:0)

现代回答:

LocalTime.parse(trade_time);

这使用DateTimeFormatter.ISO_LOCAL_TIME,它符合您的要求格式,但它也接受更长和更短的格式,例如02:2602:26:13.123456789。也许你可以忍受它。 DateTimeFormatter.ISO_LOCAL_TIME使用严格解析,因此如果任何字段超出范围,则会抛出DateTimeFormatException

如果您无法接受更长或更短的格式,请构建您自己的DateTimeFormatter。它的模式很像SimpleDateFormat

    DateTimeFormatter timeParseFormatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS")
                                            .withResolverStyle(ResolverStyle.STRICT);
    LocalTime.parse(trade_time, timeParseFormatter);

这将在秒数上正好需要3位小数,如果有2位或4位小数,则会抛出DateTimeParseException