【问题标题】:java.util.Date has two different outputs?java.util.Date 有两个不同的输出?
【发布时间】:2013-04-17 08:23:49
【问题描述】:

我有这个方法:

void updatePet(String userid, int index, int happiness, Date lastUpdated, PetLifePhase state, Date created)

对它的所有调用都会被记录(通过反射Proxy)。参数是String.valueOf()'d 并连接起来:

updatePet(xxxxxxxx,18,-96,Wed Apr 17 08:10:11 UTC 2013,ACTIVE,2013-04-10 08:01:12.442)

注意两个Date 参数的输出:

  • lastUpdated: Wed Apr 17 08:10:11 UTC 2013(遵循Date.toString() 的Javadoc)
  • created: 2013-04-10 08:01:12.442

如何,为什么,何时,嗯?为什么同一个方法输出两种不同的格式?我查看了这个toString() 的源代码,但它的输出第一种格式是硬编码的,没有ifs 可能会做出其他决定。

【问题讨论】:

  • 1) 你能提供形成日志记录的代码吗 2) 你怎么称呼updatePet,可能一个是java.util.Date 而第二个是Calendar 3) 你是同步调用的吗?
  • 它们是同一类型(类)的 Date 对象吗?
  • 检查你的类导入。你使用的是同一个 Date 类吗?
  • 啊,我不知道(或者说,在正确的时间没有记得)java.util.Date 子类存在。我怀疑它可能是 java.sql.Date。要去调查它...

标签: java date tostring


【解决方案1】:

你确定你的两个Date实际上是同一类型的Date吗?

它们可能是Date 的子类型,以不同的方式覆盖toString() 方法(例如Timestamp,它确实覆盖了toString())。

【讨论】:

  • 好的,内部切换到 JodaTime DateTimes。至少那个类是final :p
【解决方案2】:

我的猜测是 created 是 Timestamp 的子类,其格式为 yyyy-mm-dd hh:mm:ss.fffffffff

【讨论】:

    【解决方案3】:

    几乎肯定,您有一个参数是java.util.Date 的实例,另一个是java.sql.Datejava.sql.Timestamp 的实例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2020-01-19
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多