2010-08-23 13 views
5

Takvim kullanıyoruz. Tarihleri ​​yukarı veya aşağı taşımak için roll. Javadoc, daha büyük alanların değiştirilmediğinden bahseder (yani tarihi, ayın ilk günü başlayarak 5'e sola hareket ettirirsek, maalesef calendar.getTime() bana önceki aydan bir değer getirmez) . Ay değeri değişmeden kalır, bu davranışı nasıl değiştiririm. Tarih değerini uygun şekilde taşımak istiyorum. (ör. 1 Ağustos 2010'da soldan 5 gün geçtiysem 27 Ağustos 2010'dan 27 Haziran 2010'u görmek istiyorum). Burada neyi özlüyorum?Takvim rulosu işlemi düzgün çıktı versin

cevap

10

Calendar.add numaralı telefonu amount numaralı telefondan kullanabilirsiniz.

7

Rulo kural denetimi nedeniyle add(Calendar.DATE, -5) method from Calendar kullanmanız gerekecektir.

değişen geniş alanlara olmadan field imzalı miktar ekleyin: olarak

roll yöntem açıklanmıştır. Negatif bir rulo miktarı, daha büyük alanları değiştirmeden alanından çıkarma anlamına gelir.

Örnek: 1999 bir GregorianCalendar Kullanılması 30 Nisan 1999 için roll(Calendar.MONTH, 8) setleri takvim çağrılması, başlangıçta 31 Ağustos ayarlanmış bir GregorianCalendar düşünün, DAY_OF_MONTH saha ay Nisan 31 olamaz. DAY_OF_MONTH bu MONTH daha büyük bir alanıdır YEAR alan 30. 1999 değerini korumaktadır, en yakın olası değere ayarlanır.

Örnek: Bu 30 Mayıs 1999 Pazar add(Calendar.WEEK_OF_MONTH, -1) setleri takvimi çağırarak oysa başlangıçta 6 Haziran Pazar ayarlanmış bir GregorianCalendar , 1 Haziran 1999 Salı roll(Calendar.WEEK_OF_MONTH, -1) setleri takvim çağrılması 1999 düşünün rulo kuralı ek bir kısıtlama getirdiği için: MONTH WEEK_OF_MONTH yuvarlandığında değişmemelidir. eklenti kural 1 ile birlikte ele alındığında, ortaya çıkan tarih, kural 2 DAY_OF_WEEK eklemek Haziran Salı 1 Haziran Cumartesi arasında değişmeyen WEEK_OF_MONTH değişen, ayarlandığında Salı, en yakın 5. Göre Yapılmasına olmalıdır Pazar günü için olası değer (Pazar günü haftanın ilk günü olan ).