2012-05-15 3 views
1

Я получаю с сервера объект Json с этим форматом "Date": "/Date(1337032800000+0000)/", и мне нужно, чтобы он был как «1 апреля».Android: синтаксический анализ JSON date

Я пытаюсь разобрать его, как это, но я всегда получаю "Unparseable date" message:

mDate = jsonArray.getJSONObject(i).getString("Date"); 
        String shortDate = mDate.substring(6, mDate.length()-7); 
        String format="yyyy-MM-dd"; 
        SimpleDateFormat sdf = new SimpleDateFormat(format); 
        try { 
         Date date = sdf.parse(shortDate); 
        } catch (ParseException e) { 
         e.printStackTrace(); 
        } 

Спасибо большое заранее!

ответ

2

вам нужно изменить ваш оригинальный ответ что-то вроде замены /Дата/

String data = "/Date(1337032800000+0000)/"; 
String result = data.replaceAll("^/Date\\(" , ""); 
result = result.substring(0, result.indexOf('+')); 

теперь вы имеете 1337032800000 что дата в миллисекунду.

+0

с этим, он просто обрезает часть в начале, а не в конце – noloman

2

Это временная метка? Почему вы просто не изменить строку долго и:

Date date = new Date(); 
date.setTime(yourLongVariable); 

Месяц:

int month = date.getMonth(); 

    months = " " + res.getString(R.string.january); 
    if(month == 2) 
    { 
     months = " " + res.getString(R.string.febuary); 
    } 
    else if(month == 3) 
    { 
     months = " " + res.getString(R.string.march); 
    } 
    else if(month == 4) 
    { 
     months = " " + res.getString(R.string.april); 
    } 
    else if(month == 5) 
    { 
     months = " " + res.getString(R.string.may); 
    } 
    else if(month == 6) 
    { 
     months = " " + res.getString(R.string.june); 
    } 
    else if(month == 7) 
    { 
     months = " " + res.getString(R.string.july); 
    } 
    else if(month == 8) 
    { 
     months = " " + res.getString(R.string.august); 
    } 
    else if(month == 9) 
    { 
     months = " " + res.getString(R.string.september); 
    } 
    else if(month == 10) 
    { 
     months = " " + res.getString(R.string.october); 
    } 
    else if(month == 11) 
    { 
     months = " " + res.getString(R.string.november); 
    } 
    else if(month == 12) 
    { 
     months = " " + res.getString(R.string.december); 
    } 

Я знаю, что это не профессионал, но это работает для меня.

+0

это работает, но как я могу настроить формат даты для показа? Мне просто нужно «1 апреля» – noloman

+0

try: date.toLocaleString() – goodm

+0

лучше, но все же время, например, которое мне не нужно =) – noloman

Смежные вопросы