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

我正在使用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 Date对象

 

return localDate.toDate();

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

我在这里做错了吗?还是你们中有人遇到过类似的问题,并且知道解决方法?

谢谢
拉贾特

编辑:

首先,谢谢迈克尔.

因此,这是对我之前的代码段的改进,该代码段确保我获得了正确的日期-换句话说就是解决方案.

 

 
    //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的String中,您必须传递格式字符串.根据您的输入,使用此处描述的格式符号:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html#forPattern(java.lang.String)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值