2013-04-02 7 views
22

Mam obiektu JSON, które mają jedno pole, które jest data urodzin:Jak uzyskać datę z obiektu JSON

JSONObject obj = new JSONObject(response); 
User user = new User(); 
user.setuserID(obj.getString("userID")); 
user.setisMale(obj.getBoolean("isMale")); 
user.setEmail(obj.getString("email")); 
// user.setBirthdate(obj.getDate("birthdate")); 
user.setLastName(obj.getString("lastName")); 
user.setFirstName(obj.getString("firstName")); 

ale metoda getDate() nie istnieje w JSONObject.
Jak ustawić datę urodzin w moim obiekcie użytkownika?

+1

Jak to jest data reprezentowane w odpowiedzi JSON? Chyba ciąg? Pokaż JSON. –

+0

To jest jak: "data urodzenia": "2012-08-01" – user2144555

Odpowiedz

37

Można zrobić jak poniżej,

String dateStr = obj.getString("birthdate"); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date birthDate = sdf.parse(dateStr); 
//then 
user.setBirthdate(birthDate); 

nadzieję, że pomoże :)

+0

To wynikło, ale to jest drukowanie" Wed Aug 01 00:00:00 BST 2012 ", nawet mój format to' SimpleDateFormat ("rrrr-MM-dd") ' – user2144555

+0

twój wynik jest normalny, ponieważ format partten jest "yyyy-MM-dd", użyj "yyyy-MM-dd HH: mm: ss", aby uzyskać godziny, minuty i sekundy. –

+0

@ Bob.Z Otrzymuję ciąg daty podobny do tego "2015-12-25 00:00:00" Chcę sformatować w ten sposób "2015-12-25 00:00:00 UTC". jaki format powinienem napisać w 'SimpleDateFormat ("? ")'. –

4

Ogólnie rzecz biorąc, data jest podawana jako milisekundy lub jako sformatowany ciąg znaków. Tak więc w zależności od swojej json można użyć użyć new Date(json.getLong(milliseconds)) lub jeśli data jest w ciąg

String birthdate = json.getString(date);//"2013-03-26" 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
+0

Wynikiem tego jest, ale jest drukowanie "Śr. Sierpnia 01 00:00:00 BST 2012", nawet mój format to 'SimpleDateFormat (" yyyy-MM-dd ") ' – user2144555