gpt4 book ai didi

java - LocalDate.toDate( ) 返回不准确的日期

转载 作者:太空狗 更新时间:2023-10-29 12:54:07 26 4
gpt4 key购买 nike

我正在使用 JODA 格式化日期类型:2012-01-05T08:00:00.000Z(日期为 2012 年 1 月 5 日)并尝试将其转换为 Java 日期。

以下是我现阶段采取的步骤:

  • 使用 DateTimeFormatter 进行初始格式化:

    DateTimeFormatter jodaParser = DateTimeFormat
    .forPattern(inputDateWhichIsAString);
  • 将其转换为具有必要时区 (UTC) 的 LocalDate

    LocalDate localDate = jodaParser
    .withZone(DateTimeZone.UTC)
    .parseDateTime(inputDateWhichIsAString).toLocalDate();
  • 使用 LocalDate 检索 Java 日期对象

    return localDate.toDate();

然而,虽然我应该期望返回日期是:2012 年 1 月 5 日,但我得到的是 1970 年 1 月 1 日。我的印象是 JODA 处理了 Java Date 对象已知的这些问题.

我是不是做错了什么 - 或者你们中有人遇到过类似的问题并且知道解决方法吗?

谢谢拉惹

编辑:

首先感谢迈克尔。

所以这是对我之前的代码 fragment 的改进,它确保我得到正确的日期 - 换句话说就是解决方案。

 
//Make sure you use HH instead of hh if you are using 24 hour convention. I use this convention since my date format is: 2012-01-05T08:00:00.000Z


DateTimeFormatter jodaParser =
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");

LocalDate date = jodaParser.withZone(DateTimeZone.UTC).parseDateTime
(inputDateWhichIsAString).toLocalDate();

return date.toDate();

干杯拉惹

最佳答案

顾名思义,

DateTimeFormat.forPattern 需要一个模式而不是要转换的输入。只有 DateTimeFormatter.parseDateTime(String) 需要 String 来解析实际数据。

所以在 DateTimeFormat.forPattern 的字符串中你必须传递一个格式字符串。根据您的输入,使用此处描述的格式符号:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html#forPattern(java.lang.String )

关于java - LocalDate.toDate( ) 返回不准确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com