2013-03-21 11 views
5

Zrobiłem własny kalendarz. Pokazuje datę urządzenia jako aktualną datę. Ale moim wymaganiem jest pokazywanie 12 dni przed datą jako aktualną datą. np-Dzisiaj jest 21, ale chcę, żeby mój kalendarz pokazywał 9. Chcę zrobić to samo z rokiem. Wiem, jak uzyskać aktualną datę. Używam tego kodu.Pokaż 12 dni przed datą jako bieżącą datę

_calendar = Calendar.getInstance(Locale.getDefault()); 
month = _calendar.get(Calendar.MONTH) + 1; 
year = _calendar.get(Calendar.YEAR); 
Log.d(tag, "Calendar Instance:= " + "Month: " + month + " " + "Year: " + year); 

Mój nowy kod jest

_calendar = Calendar.getInstance(Locale.getDefault()); 
month = _calendar.get(Calendar.MONTH) + 1; 
year = _calendar.get(Calendar.YEAR); 
Log.d(tag, "Calendar Instance:= " + "Month: " + month + " " + "Year: " + year); 
/*_calendar.add(Calendar.DAY_OF_YEAR, -12);*/ 
_calendar.roll(Calendar.DAY_OF_MONTH, -12); 
_calendar.roll(Calendar.MONTH, -12); 
Calendar _calendar=Calendar.getInstance(); 

Odpowiedz

0

W wielu językach NOW jest funkcją, która zwraca DateTime czasu kiedy dzwonił. Możesz add ujemną (-) liczbę dni, a on zwróci to, czego potrzebujesz. Zawsze o tym zapominam, myśląc, że możesz dodać tylko pozytyw, ale to nie jest poprawne. ;-)

Nadzieję, że pomaga.

1

Spróbuj:

_calendar.roll(Calendar.DAY_OF_YEAR, -12); 
_calendar.roll(Calendar.YEAR, -12); 

Będzie roll powrotem przez 12 dni, a potem przez lata 12.

+0

Cześć Tushar, Ten kod nie działa dla mnie .. – Prinkal

+0

@Prinkal jaki jest błąd? – Tushar

+0

Brak błędu, Pokazuje bieżącą datę. – Prinkal

0

Spróbuj.

_calendar = Calendar.getInstance(Locale.getDefault()); 
_calendar.setTime(new Date()); 
_calendar.add(Calendar.DATE, -12); 
Date twelveDaysAgo = _calendar.getTime(); 
0

Spowoduje to przeniesienie daty z powrotem o 12 dni, w razie potrzeby zmieni również miesiąc/rok.

_calendar.add(Calendar.DAY_OF_YEAR, -12);