【问题标题】:Java Time format return as time object [duplicate]Java时间格式作为时间对象返回[重复]
【发布时间】:2016-03-30 18:38:17
【问题描述】:

如果我这样做:

ZonedDateTime.now().format(DateTimeFormatter.BASIC_ISO_DATE)

它返回一个String,而我希望它返回一个ZonedDateTime 对象。有没有一种干净的方法可以做到这一点。这是显而易见的解决方案:

ZonedDateTime.parse(ZonedDateTime.now().format(DateTimeFormatter.BASIC_ISO_DATE));

有没有更简单的方法来做到这一点?这似乎有点太冗长了。

【问题讨论】:

  • 哼,ZonedDateTime.now()呢?
  • ZonedDateTime 没有格式。你要的只是ZonedDateTime.now()
  • 是的,但我想将其格式化为任何我想要的格式。我可以选择任何DateTimeFormatter,它会根据该格式返回。我已经用多种格式对此进行了测试,并根据我选择的格式获得了多个返回值
  • @Richard 听起来您没有区分ZonedDateTime 和格式化输出。您应该在程序内部使用ZonedDateTime 而不使用任何格式,然后在需要将其传递到程序外部或将其公开给用户时使用DateTimeFormatter
  • 这个问题和下面的问题有区别吗:stackoverflow.com/questions/36311293/…

标签: java datetime java-8 datetime-format


【解决方案1】:

【讨论】:

  • 这不是我想要的。我希望能够控制它返回.now() 的格式。我可以使用.format 选项来做到这一点;我已经测试了选择多种格式,它的工作方式如我所愿。以各种格式返回日期。现在我想将该格式作为 zoneddatetime 对象而不是字符串返回,因为 .format() 方法返回一个字符串
  • 正如@Louis 所说,我认为您应该使用 ZonedDateTime 而不在程序中进行任何格式化
  • @Richard 这没有任何意义。 ZonedDateTime 对象中没有格式之类的东西。只有将ZonedDateTime 转换为String 时才有格式。
  • @LouisWasserman here
  • @Richard,是的,还有? ZonedDateTime 就像 int:数字 16 和 0x10 是一回事,但 int 只是一个数字,没有任何格式。只有将int 转换为String 时才有格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
相关资源
最近更新 更多