【问题标题】:How to validate dates in two different formats [duplicate]如何验证两种不同格式的日期[重复]
【发布时间】:2017-08-09 09:32:15
【问题描述】:

我正在做一些junit测试。我以如下日期的形式收到日期作为回复:

2017-08-14 00:00:00.0 +0:00

oracle DB中存在的数据是

14-AUG-17 12.00.00.000000000 AM +00:00

我想使用这样的断言,但它失败了。任何人都可以帮助确保预期和实际匹配。

Assert.assertEquals("14-08-2017", 2017-08-14 00:00:00.0 +0:00); 

【问题讨论】:

  • 在 Oracle 中,日期没有it is stored as 7- or 8-bytes 的格式。如果将格式应用于日期,则由访问数据库的用户界面完成。对于 SQL/Plus 或 SQL developer,格式由NLS_DATE_FORMAT 会话参数确定;其他接口(例如 Java)可能会应用不同的默认格式,或者可能只是将其存储在其原始 byte format 中。

标签: java oracle date datetime


【解决方案1】:

您可以为断言创建两个 Date 对象。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
try {
    Date parsedDate1 = formatter.parse("14-08-2017");
    System.out.println(parsedDate1);

    SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
    Date parsedDate2 = formatter2.parse("2017-08-1 00:00:00.0 +0:00");
    Assert.assertEquals(parsedDate1, parsedDate2);

} catch (ParseException e1) {
}

【讨论】:

  • 谢谢。它有效
【解决方案2】:

您可以使用SimpleDateFormat 从日期生成字符串。

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Assert.assertEquals("14-08-2017", sdf.format(<your date instance>));

【讨论】:

  • “你的日期实例”的意思。我有一个格式为“2017-08-14 00:00:00.0 +0:00”的字符串。你的意思是说我应该这样写 Assert.assertEquals("14-08-2017", sdf.format(2017-08-14 00:00:00.0 +0:00));
  • 谢谢,可以了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多