我正在使用Joda time DateTimeFormatter以yyyy-mm-dd字符串格式创建一个新的datetime对象。当调用DateTime date = formatter.parse(String)时,我得到一个额外小时的DateTime对象。我住在UTC +1。如何格式化字符串日期时间而不添加小时数。
String date = "2013-01-28";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-mm-dd");
DateTime date = formatter.parseDateTime(date);
date.ToString() = 2013-01-28T00:01:00.000+01:00
expected = 2013-01-28T00:00:00.000+01:00
此外,稍后在代码中我比较两个DateTime对象。此解析器采用yymmdd格式,并且不会增加一个小时。
String date = "130102"
DateTimeFormatter format = DateTimeFormat.forPattern("yyMMdd");
DateTime datetime = format.parseDateTime(date);
datetime.toString = 2013-01-02T00:00:00.000+01:00
答案 0 :(得分:1)
yyyy-mm-dd使用分钟,而非月份(模式符号M)。请参阅pattern symbols on Joda-Time-page的文档。
解析" 2013-01-28"错误的模式产生" 2013-01-28T00:01:00.000 + 01:00"。你看到分钟等于1吗?如果解析器找不到月份信息(在我看来不聪明),那么1月份似乎是默认值。