2010-02-03 20 views

Odpowiedz

8

Format daty nie jest standardem w JSON, więc musisz wybrać sposób "przejścia przez". Myślę, że wartość, którą widzisz, jest w milisach.

W Javie:

System.out.println (new Date(1263798000000L)); 
// prints: Mon Jan 18 09:00:00 IST 2010 

To w moim czasowej, oczywiście, ale w każdym razie jest to dość niedawno data.

Z javadoc od daty konstruktora:

Parametry:
Date - milisekund od 1 stycznia 1970, 00:00:00 GMT.

odwołują się do docs ->http://java.sun.com/javase/6/docs/api/java/util/Date.html#Date%28long%29

+0

Jestem nowy Ava, jak również, w jaki sposób mogę zrobić wyrażenie regularne, aby uzyskać wartość? –

+0

Nie trzeba używać wyrażeń regularnych, można użyć metod String, aby uzyskać podciąg. Spójrz na dokumenty. – Yoni

2

Jak Yoni już wspomniano, JSON nie definiuje, co jest data, czyli jak serializacji jeden. Patrząc na opublikowany fragment kodu JSON, wygląda na to, że ktoś poczuł się trochę zbyt kreatywny, serializując taką randkę.

Należy zwrócić uwagę na to, że do każdego parsera JSON jest to tylko ciąg znaków. Część "Data (12345)" jest bez znaczenia. Musisz przetworzyć to na siebie w java.util.Date, co w tym przypadku oznacza pozbycie się czegokolwiek, co nie jest liczbą, i użycie numeru (czasu UNIX) do utworzenia instancji java.util.Date.

Tylko dla zapisu. Typowym sposobem przekazywania datę za pomocą JSON byłby albo

{'timestamp':1265231402} 

lub bardziej prawdopodobne

{'timestamp':'Wed, 03 Feb 2010 22:10:38 +0100'} 

Ten ostatni przykład byłby obecny znacznik czasu (jak to piszę) stosując standardowy RFC-2822 formatowanie, które można łatwo przeanalizować za pomocą narzędzi daty Javy. Zajrzyj do SimpleDateFormat, aby dowiedzieć się, jak parsować daty w Javie.

+1

W ten sposób obiekty .NET DateTime zostają spersonalizowane za pomocą JsonSerialiser. –

14

To może pomóc:

public static Date JsonDateToDate(String jsonDate) 
{ 
    // "/Date(1321867151710)/" 
    int idx1 = jsonDate.indexOf("("); 
    int idx2 = jsonDate.indexOf(")"); 
    String s = jsonDate.substring(idx1+1, idx2); 
    long l = Long.valueOf(s); 
    return new Date(l); 
} 
0
public String FormartDate(String date) { 
     Calendar calendar = Calendar.getInstance(); 
     String datereip = date.replace("/Date(", "").replace(")/", ""); 
     Long timeInMillis = Long.valueOf(datereip); 
     calendar.setTimeInMillis(timeInMillis); 

     String DateFmtI; 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
     DateFmtI = simpleDateFormat.format(calendar.getTime()); 
     return DateFmtI; 
    } 
Powiązane problemy