Как установить день месяца для дня недели?

в моем приложении я могу установить будильник на любой день недели, я хочу отображать тост со временем до следующего будильника, я устанавливаю значение на каждый день:

String[] str = new String[7];
str[0] = getResources().getString(R.string.weeks_sunday);
str[1] = getResources().getString(R.string.weeks_monday);
str[2] = getResources().getString(R.string.weeks_tuesday);
str[3] = getResources().getString(R.string.weeks_wednesday);
str[4] = getResources().getString(R.string.weeks_thursday);
str[5] = getResources().getString(R.string.weeks_friday);
str[6] = getResources().getString(R.string.weeks_Saturday);
weeks = str;

Это то, что я делаю, чтобы рассчитать время до следующего будильника, но я не знаю, как узнать день закрытия

    String substr = ":";
    String before =  aTime.substring(0, aTime.indexOf(substr));
    int bef = Integer.parseInt(before);
    String after = aTime.substring(aTime.indexOf(substr) + substr.length());
    int aft = Integer.parseInt(after);

    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int dayy = c.get(Calendar.DAY_OF_MONTH);

    GregorianCalendar date = new GregorianCalendar();
    long currentTime = date.getTimeInMillis();
    GregorianCalendar calendar = new GregorianCalendar();
    calendar.set(year, month, 22, bef, aft, 0);
    long difference = calendar.getTimeInMillis()-currentTime;

    long x = difference / 1000;
    long seconds = x % 60;
    x /= 60;
    long minutes = x % 60;
    x /= 60;
    long hours = x % 24;
    x /= 24;
    long days = x;      



    if(hours == 1){
            Toast.makeText(AddAlarmActivity.this, "Alarm set for " + days + " days, " + hours + " hour and " + minutes + " minutes from now", Toast.LENGTH_LONG).show();
    }else if(hours >= 2){
            Toast.makeText(AddAlarmActivity.this, "Alarm set for " + days + " days, " + hours + " hours and " + minutes + " minutes from now", Toast.LENGTH_LONG).show();

person GusDev    schedule 18.09.2015    source источник
comment
Я не понимаю вопроса. Похоже, вы смогли рассчитать день просто отлично? Вы получаете неверные значения? Класс TimeUnit может прояснить ситуацию: stackoverflow.com/a/7829642/3131147   -  person AdamMc331    schedule 18.09.2015
comment
я хочу знать дату на ближайший день, например, если я выберу воскресенье, я получу только [0] я хочу знать дату и установить ее вместо 22   -  person GusDev    schedule 18.09.2015


Ответы (2)


Чтобы получить день, вы можете сделать

final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
final int day = calendar.get(Calendar.DAY_OF_WEEK);

switch (day) {
    case Calendar.SUNDAY:

}

// or you can just match the day to your day name string.
person Jin    schedule 18.09.2015

Date date = calendar.add(Date, 1);

Это даст вам на следующий день в кал. Для получения имени дня и номера:

 String dayname = date.toString().substring(0, 3);
 String temp = date.toString().substring(8, 10);
 Integer day = Integer.parseInt(temp);
person XxGoliathusxX    schedule 18.09.2015
comment
о боже, пожалуйста, не используйте toString и substring. - person Jin; 19.09.2015
comment
да, проблема в том, что datelib устарел, а у календаря мало методов. но удачи - person XxGoliathusxX; 19.09.2015