2015-03-30 2 views
1

В андроиде у меня есть строка этого формата "2015-03-30T12:30:00", и я хочу знать, в какой день недели она есть.Java - Знай день недели данной строки

Тестирование с помощью устройства в тот же день, с этой функцией dayOfweek = 5 и dayOfWeek2 = 2 Почему?

если я пытаюсь создать новую дату с год, месяц, день Его говорят осуждается ...

public int devolverDia(String hora) 
{ 
    hora = hora.substring(0, 10); 
    String weekdays[] = new DateFormatSymbols(Locale.ENGLISH).getWeekdays(); 
    Calendar c = Calendar.getInstance(); 

    int year = Integer.parseInt(hora.substring(0, 4)); 
    int month = Integer.parseInt(hora.substring(5, 7)); 
    int day = Integer.parseInt(hora.substring(8, 10)); 

    c.set(Calendar.YEAR, year); 
    c.set(Calendar.MONTH, month); 
    c.set(Calendar.DAY_OF_MONTH, day); 

    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); 


    c.setTime(new Date()); 
    int dayOfWeek2 = c.get(Calendar.DAY_OF_WEEK); 


    return dayOfWeek; 
} 

ответ

4

Причина, по которой вы не получите дату, что вы ожидаете, что линия

c.set(Calendar.MONTH, month); 

ожидает номер месяца от 0 (на январь) до 11 (на декабрь). Если вы замените его на

c.set(Calendar.MONTH, month - 1); 

этот код будет работать.

Однако, гораздо лучшим решением было бы использовать parse метод SimpleDateFormat class превратить ваш String в Date.

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
c.setTime(format.parse(hora)); 
+0

Работал! как прелесть! – D4rWiNS

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