【问题标题】:Joda DateTimeFormat without - separator?Joda DateTimeFormat 没有 - 分隔符?
【发布时间】:2015-03-02 20:34:25
【问题描述】:

我正在尝试以 yyyyMMdd 的格式制作一个 joda LocalDate,但每次我解析它以创建对象时,它都会无缘无故地插入像 yyyy-MM-dd 这样的连字符。

DateTimeFormatter format = DateTimeFormat.forPattern("yyyyMMdd");
LocalDate d = format.parseLocalDate("20150101");

有没有办法让它最终看起来像 20150101 还是永远是 2015-01-01?

【问题讨论】:

  • 您是否也在使用formatterprint 日期?
  • @vikingsteve 我没有打印它,它只是在检查测试用例时自动执行此操作。
  • 好的,当您将其与测试用例中的字符串进行比较时,您需要知道或指定您自己的格式。
  • :|谢谢哈哈我不知道为什么我没想到

标签: java jodatime


【解决方案1】:

解决办法是不要使用toString()-方法:

DateTimeFormatter format = DateTimeFormat.forPattern("yyyyMMdd");
LocalDate d = format.parseLocalDate("20150101");
System.out.println(format.print(d)); // 20150101
System.out.println(d); // using toString(): 2015-01-01

很简单,不是吗?对我来说,使用连字符的形式更具可读性,因此这是 toString() 方法的标准输出的自然选择。

顺便说一句:这两种变体都是有效的 ISO-8601 字符串。不带连字符的表格称为 BASIC DATE,带连字符的表格称为 EXTENDED DATE。

【讨论】:

  • 感谢您提供格式的确切名称。但是,我没有使用 toString。只有当测试用例会说“2015-01-01 不等于 20150101”时才会出现问题,所以我假设它在检查测试用例时执行了一些默认格式。
  • @fiveandten 你能否展示你的测试用例(带代码)你观察到偏差的地方?
猜你喜欢
  • 2020-07-18
  • 2021-05-22
  • 2019-02-27
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 2012-05-13
  • 2016-12-07
相关资源
最近更新 更多