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)
标签:jodatime,java,android,date 来源: https://codeday.me/bug/20191201/2084356.html