My date string format is like this: Jan 2, 2012 After the Instant.parse() method, instant instance becomes the date of Jan 1, 2012, which is 1 day earlier, why? If the original date string is jan 1, 2012, the Instant will be the date of Dec 31, 2011.
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);
I'm using MongoDB to store these dates. I've tested and it shows when formatting date string->instant there's no mistake. But when I insert this Date type object into MongoDB, the date string in the MongoDB becomes 1 day earlier., why?
In MongoDB:
/* 0 */
{
"_id" : ObjectId("50221a40da74d74053abb445"),
"time" : ISODate("2011-12-31T14:00:00Z")
}
Output is
Next for:
output is:
You could check the UTC time zone, basically mongo server running depending on UTC time zone
Mongo stores its Dates in milliseconds since the Unix epoch.
See: http://www.mongodb.org/display/DOCS/Dates
So you dont have any time zone. But, if you use the console the .js parser is converting the UTC Dates into your current system time zone settings.
You can test that: