Mój format ciągów daty jest taki: 2 stycznia 2012 Po wykonaniu metody Instant.parse() instancja natychmiastowa staje się data 1 stycznia 2012 r., czyli 1 dzień wcześniej, dlaczego? Jeśli data oryginalny ciąg jest 01 stycznia 2012, Instant będzie data 31 grudnia, 2011.data w MongoDB: podczas wstawiania obiektów Date do bazy danych Mongo, data staje się 1 dzień wcześniej niż ona sama
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);
Używam MongoDB przechowywać te daty. Przetestowałem i pokazuje się, kiedy formatuję ciąg daty-> natychmiast, bez pomyłki. Ale kiedy wstawiam ten obiekt typu Date do MongoDB, ciąg daty w MongoDB staje się 1 dzień wcześniej., Dlaczego?
W MongoDB:
/* 0 */
{
"_id" : ObjectId("50221a40da74d74053abb445"),
"time" : ISODate("2011-12-31T14:00:00Z")
}
Czy próbowałeś dodać składnik strefy czasowej? Może to być coś ze swoim lokalnym i data zostanie wyrównana przez strefę czasową. –