2012-01-18 47 views
1

可以說我有一個班級的用戶。用戶名字,性別......出生。當我得到一個userobject時,我可以將它插入到數據庫中。沒關係。日期只有一個問題。我試着這樣:如何將此字符串轉換爲日期? ||如何在mongodb中讀取/寫入日期?

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莫名其妙的日期?或者,也許我可以插入文件沒有字符串?感謝您的任何幫助!

編輯:好Renato說我可以使用simpledateformat。還有什麼關於另一種選擇?如何把它作爲日期()在數據庫?

+0

當你說「在數據庫中它是一個字符串」 - 爲什麼?爲什麼不在那裏約會呢? – 2012-01-18 21:43:42

+1

那又是那裏的其他問題:如何將Date()作爲Date()寫入db;)不知道mongodb中的解決方案。是否有可能在這個json樣式中將Date()寫成Date()? – OverStack 2012-01-18 21:45:42

+0

你自相矛盾:「當我得到一個userobject時,我可以將它插入到數據庫中,這很好,只有日期問題。」,所以你知道如何將Date()保存爲Date (),但是你將user.getBorn()轉換爲String(json),然後保存到mongo。你期望mongo做什麼,將它保存爲日期?每次你通過一個字符串你希望mongo讀你的頭腦,並找出類型?它不這樣工作。 – milan 2012-01-19 09:27:31

回答

2

這可能是更容易使用BasicDBObjectBuilder - 和使用構造再轉長到Date對象像這樣:

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

這將存儲作爲BSON日期出生的價值。

1

將其轉換爲簡單日期dd-MM-yyyy或其他,使用SimpleDateFormat

鑑於您只是想存儲用戶出生的日期,通常意味着日,月和年,因此將其存儲爲字符串是有意義的(也可以使用Date.getTime()將其轉換爲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(); 
    } 

} 
相關問題