2014-01-26 3 views
-1

Я работаю над проектом календаря, и мне интересно, есть ли встроенная функция, доступная в классе Calendar в андроиде, которая может меняться ежедневно или еженедельно.Изменение дат в еженедельной или ежемесячной основе

См., Например, Я храню данные на сегодняшний день. И я хочу повторить эту операцию ежедневно или еженедельно. Я не хочу использовать Calendar api.

например.

скажем мой календарь экземпляра даты переменной накапливания «2014-26-01»

, так что я хочу сделать что-то вроде

final Calendar c = Calendar.getInstance(); 

for(int i = o ; i <= 30 ; i++){ 


    yy = c.get(Calendar.YEAR); 
    mm = c.get(Calendar.MONTH); 
    dd = c.get(Calendar.DAY_OF_MONTH); 

    Toast.makeText(this,yy+"-"+mm+"-"+dd,Toast.LENGH_SHORT).show(); 
    /** here i want to change the value of `Calendar c` to next day or next week**/ 
} 
+0

[Документация] (http://developer.android.com/reference/java/util/Calendar. html) объясняет, что «Календарь» может сделать для вас. – zapl

+0

@ABoschman Пожалуйста, уточните мой обновленный вопрос.Thanx – Kunu

+0

@zapl Да, я уже проверил это, но не смог найти решение – Kunu

ответ

1

Вы можете использовать метод calendar.add() для увеличения или уменьшите дату. , например:

общественного ничтожного Календарь getTomorrow() {

Calendar calendar = Calendar.getInstance(); 
calendar.add(Calendar.DATE,1); 

//return the calendar with the date of tomorrow 
return calendar; 

}

общественного недействительный Календарь getYesterday() {

Calendar calendar = Calendar.getInstance(); 
calendar.add(Calendar.DATE,-1); 

//return the calendar with the date of yesterday 
return calendar; 

}

+0

Thanx, но уже решил так же, как вы предлагали – Kunu

1

Кстати, Joda-Time бесплатно предлагает бесплатное plusDays, plusWeeks и plusMonths методы для таких расчетов.

// java.util.Date dateNow = new java.util.Date(); 
// Convert a java.util.Date to Joda-Time. Simply pass Date to constructor. 
// DateTime now = new DateTime(dateNow, DateTimeZone.forID("Europe/Paris")); 

DateTime now = new DateTime(DateTimeZone.forID("Europe/Paris")); 
DateTime tomorrow = now.plusDays(1); 
DateTime nextWeek = now.plusWeeks(1); 
DateTime firstMomentOfNextWeek = now.plusWeeks(1).withTimeAtStartOfDay(); 
DateTime nextMonth = now.plusMonths(1); 

// Convert from Joda-Time back to old outmoded bundled Java class, java.util.Date. 
java.util.Date dateNow = now.toDate(); 

самосвала утешать ...

System.out.println("now: " + now); 
System.out.println("now in UTC/GMT: " + now.toDateTime(DateTimeZone.UTC)); 
System.out.println("tomorrow: " + tomorrow); 
System.out.println("nextWeek: " + nextWeek); 
System.out.println("firstMomentOfNextWeek: " + firstMomentOfNextWeek); 
System.out.println("nextMonth: " + nextMonth); 
System.out.println("dateNow: " + dateNow); // Remember, a j.u.Date lies. The `toString` applies default time zone, but actually a Date has no time zone. 

При запуске ...

now: 2014-01-27T00:06:41.982+01:00 
now in UTC/GMT: 2014-01-26T23:06:41.982Z 
tomorrow: 2014-01-28T00:06:41.982+01:00 
nextWeek: 2014-02-03T00:06:41.982+01:00 
firstMomentOfNextWeek: 2014-02-03T00:00:00.000+01:00 
nextMonth: 2014-02-27T00:06:41.982+01:00 
dateNow: Sun Jan 26 15:06:41 PST 2014 
Смежные вопросы