我的日期字符串格式是这样的:2012 年 1 月 2 日在Instant.parse()方法之后,instant实例的日期变成了2012年1月1日,提前了1天,为什么呢?如果原始日期字符串是 jan 1, 2012,则即时日期将为 2011 年 12 月 31 日。
String dateString="Jan 1, 2012";
Instant instant = Instant.parse(dateString, new DateTimeFormatterBuilder()
.appendMonthOfYearShortText()
.appendLiteral(" ")
.appendDayOfMonth(1)
.appendLiteral(", ")
.appendYear(4, 4)
.toFormatter());
DateTime dateTime = new DateTime(instant);
Date date = new Date(dateTime.getMillis());
document.append("time", new Date(dateTime.getMillis()));
tagsDbCollection.insert(document);
我正在使用 MongoDB 来存储这些日期。我已经测试过,它显示格式化日期字符串时->即时没有错误。
但是当我将这个Date类型对象插入MongoDB时,MongoDB中的日期字符串变早了1天,为什么?
在 MongoDB 中:
/* 0 */
{
"_id" : ObjectId("50221a40da74d74053abb445"),
"time" : ISODate("2011-12-31T14:00:00Z")
}
final String dateString = "Jan 2, 2012";
final DateTimeFormatter dtf = new DateTimeFormatterBuilder().appendMonthOfYearShortText().appendLiteral(" ").appendDayOfMonth(1).appendLiteral(", ").appendYear(4, 4).toFormatter();
final DateTime jodaDate = dtf.parseDateTime(dateString);
System.out.println(jodaDate);
final Date javaDate = new Date(jodaDate.getMillis());
System.out.println(javaDate);
输出是
2012-01-02T00:00:00.000+02:00
Mon Jan 02 00:00:00 EET 2012
下一个:
final String dateString = "Jan 1, 2012";
输出是:
2012-01-01T00:00:00.000+02:00
Sun Jan 01 00:00:00 EET 2012
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)