【问题标题】:SimpledateFormat's parse method javaSimpledateFormat的解析方法java
【发布时间】:2012-09-28 11:07:32
【问题描述】:

这是一个愚蠢的问题,但我看不出我做错了什么。我想将24:00 之类的字符串解析为日期对象。我知道如果我们使用kk:mm 作为日期格式,则时间将从 01:00 到 24:00 (from the API)。但我无法让下面的代码工作。

String test = "24:00";
System.out.println("TEST: " + new SimpleDateFormat("kk:mm").parse(test));

输出:

TEST: Thu Jan 01 00:00:00 GMT 1970

预期输出:

TEST: Thu Jan 01 24:00:00 GMT 1970

编辑:

System.out.println("TEST: " + new SimpleDateFormat("k:mm:ss").format(new SimpleDateFormat("k:mm:ss").parse(test)));

这打印TEST: Thu Jan 01 24:00:00 GMT 1970

但是为什么不在解析的时候呢?

非常感谢任何帮助

【问题讨论】:

  • 尝试通过“kk:mm”输出“Thu Jan 01 00:00:00 GMT 1970”,你会看到:)
  • @Fildor 当然,它就是这样工作的。但为什么不在解析时呢?
  • 它确实有效。但是 DateTime 对象不能保存“24:00”。现在是 00:00 - 23:59。当使用“k”格式化时,它将输出 00:00 为 24:00,但内部仍为 00:00。这有点像使用 AM/PM 或 24 小时制。内部表示相同 - 不同的输出。
  • @Fildor 啊,现在我明白了.. tahnsk :)
  • 我其实有点草率,+1 @jalynn2 的准确解释。

标签: java parsing date date-format simpledateformat


【解决方案1】:

Date.toString() 方法默认为 hh:mm。使用 SimpleDateFormat 进行输出和解析。

【讨论】:

  • 我不想要一个字符串我想要一个日期对象
  • @chaitanya10:它们的日期是一样的,只是你希望输出格式的问题。
  • Date 对象使用 long 来表示时间:自 1970-01-01 以来的毫秒数。当你解析它时,你会得到一个带有该数字的日期对象。格式化将该数字转换为人类可读的字符串。您可以要求将字符串格式化为午夜 =“00:00”、“24:00”或“12:00 AM”。它们都只是同一事物的不同表示。由于您没有提供日期,因此 00:00 = 24:00
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多