Как преобразовать эту строку в дату?||Как читать / писать дату в mongodb? - PullRequest
1 голос
/ 19 января 2012

Допустим, у меня есть класс User. Пользователь получил имя, пол, ..., родился. Когда я получил объект userob, я могу вставить его в базу данных. Все в порядке. Есть только проблема с датой. Я пытаюсь это:

String json = "{'name': '" + user.getName() + "', 'born': '" + user.getBorn() + "'}";
DBObject o = (DBObject)JSON.parse(json);
myCollection.insert(o); 

user.getBorn() возвращает дату, но в базе данных это строка. Так что, если я читаю это, я получаю что-то вроде Fri Sep 05 00:00:00 GMT+01:00 1980 в виде строки, и это не хорошо :) Я хотел бы иметь дату Так что, может быть, есть еще один вариант (?) Может быть, я мог бы как-то преобразовать эту DateString в Date? Или, может быть, я мог бы вставить документ без строки? Спасибо за любую помощь!

Редактировать: хорошо, Ренато сказал, что я мог бы использовать простой формат. А как насчет другого варианта? Как поставить это как Date () в БД?

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Может быть проще использовать BasicDBObjectBuilder, например, так:

DBObject o = BasicDBObjectBuilder.start()
  .add("name", user.getName())
  .add("born", user.getBorn())
  .get();
myCollection.insert(o);

Это будет хранить исходное значение как дату BSON.

1 голос
/ 19 января 2012

Преобразуйте его в простую дату dd-MM-гггг или как угодно, используя SimpleDateFormat .

Учитывая, что вы просто хотите сохранить дату рождения пользователя, что обычно означает день, месяц и год, имеет смысл сохранить его как строку (вы также можете преобразовать его в long с помощью Date.getTime () и преобразовать long в объект Date с помощью конструктора - new Date (long), это спасет васнекоторые байты, но информация в БД становится далеко не ясной)

    private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

public static void main(String[] args) {
    // convert a date to a String
    String dateString = formatter.format(new Date());
    // this prints 2012-01-18
    System.out.println(dateString);

    try {
        Date today = formatter.parse(dateString);
        // this prints Wed Jan 18 00:00:00 CET 2012
        System.out.println(today);
    } catch (ParseException e) {
        // string was invalid
        e.printStackTrace();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...