2015-10-24 20 views
0

Привет Я работаю над проектом, где мне нужно получить дату первого дня недели в формате yyyy-MM-dd и показать его в TextView, I попробовал решение this, но я смутился с использованием Date иклассов, я попробовал код ниже, но всегда получаю полную строку даты или неправильную дату. Моя общая цель - получить дату первого дня недели любой, кто пишет код для этого или объясните разницу между Date и Calendar классами. Я был бы признателен. Спасибо здесь кодКак получить дату первого дня текущей недели в android

int year, month, day; 

    tvTest = (TextView) findViewById(R.id.tvTheoryStudies); 

    Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.HOUR_OF_DAY, 0); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 


    year = cal.get(Calendar.YEAR); 
    month = cal.get(Calendar.MONTH); 
    day = cal.get(Calendar.DAY_OF_MONTH); 
    String todayDate = new StringBuilder().append(year).append("-").append(month).append("-").append(day).toString(); 


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    cal.set(Calendar.DAY_OF_WEEK, 1); 
    Date date =new Date(); 

    try { 
     date = sdf.parse(todayDate); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 


    cal.setTime(date); 
    date = cal.getTime(); 
    tvTest.setText(date.toString()); 

ответ

1

Вы делаете это намного сложнее, чем это должно быть.

Код ниже даст вам то, что вы хотите:

Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    String outputDate = simpleDateFormat.format(calendar.getTime()); 

Calendar.getInstance() дает объект календарь установлен на дату сегодняшнего.
Затем я установил DAY_OF_WEEK в ПОНЕДЕЛЬНИК (обратите внимание, что постоянное значение Calendar.MONDAY равно 2, а не 1. Это можно увидеть в документации).
Я установил SimpleDateFormat с правильным форматом, а затем я использую getTime() в объекте календаря, чтобы получить объект Date, который я передаю SimpleDateFormat.

Разница между классом Date и классом Calendar заключается в том, что класс Calendar используется для манипуляций с датой (добавление, вычитание, сравнение и т. Д.), Тогда как класс Date просто используется для хранения даты и напечатайте его на экране для просмотра пользователем.

Таким образом, вы всегда должны иметь объект «Календарь» в коде, а затем преобразовывать его, как я делаю выше, при показе его пользователю. Класс Calendar имеет ALOT больше функций для работы, чем класс Date, и это, как правило, проще.

+0

Большое спасибо за ваш ответ, это было очень полезно для меня –