по ISO Дата/время строка имеет вид
YYYY-MM-DDTHH:mm[:ss[.SSS]]TimeZoneOffset|"Z"
Так, например, время написания (приблизительно) в моем местном времени будет
2014-09-16T18:59+02:00
Буква T сообщает вы, что дата и время отделены друг от друга. Поэтому при разборе строки ISODate вы можете быть абсолютно уверены, что часть перед «Т» является датой, а часть после Т - временем.
«Z» происходит от алфавита НАТО, обозначающего букву Zulu, которая исторически обозначала стандартное время НАТО, которое само по себе совпадает с UTC с 60-х годов. Таким образом, для коротких обозначений, UTC упоминается в этом письме. Время написания будет написано как
2014-09-16T16:59:00.000Z
в UTC.
Сохранение дат в MongoDB очень просто. Драйверы базы данных MongoDB обычно отображают собственные типы даты/даты и времени использования языка программирования, которые вы используете в формате, используемом MongoDB внутри save, и наоборот при загрузке данных из базы данных.
Так, например, это вполне допустимо, чтобы сделать что-то вроде
var doc = { name:"FooBar", added: new Date()};
db.collection.save({doc});
в JavaScript или использовать в Java java.util.Date
.
Однако вы обнаружили небольшую несогласованность в документах. В то время как тип упомянутой документации упоминается как Дата, она внутренне хранится как дата BSON. Сама дата BSON хранится как 64-битное целое число с миллисекундами с epoch и преобразуется оболочкой mongo и (iirc как опция некоторыми из драйверов MongoDB) в строку формата даты с ISO.
И да, вы можете сохранить и обработать нулевое значение для каждого заданного поля.
Это так, как показано на рисунке, внутренняя двоичная дата, такая как C# 'DateTime', хранится как 64-разрядное целое [Дата BSON] (http://docs.mongodb.org/manual/reference/bson-types/ #Дата). – JohnnyHK