2013-05-13 31 views
5

Küçük bir sorunum var, bir uygulama geliştiriyorum, ve pazartesi gününün başlangıcını pazartesiden diğerine (cumartesi, perşembe) değiştirmem gerekiyor. Bu android, mümkün olduğunu ben hafta ve başlangıç ​​biten tarihini bilmek hesaplamak gerekir. (hafta örnek olarak ano perşembe başlıyor)Android Calendar: Haftanın başlangıç ​​gününü değiştirme

Not: Ben sadece android geliştirmede yeni başlayanlardan biriyim. benim kodum SimpleDateFormat dateformate = new SimpleDateFormat ("dd/MM"); sonucunu ancak haftanın yıldızı olarak pazartesi ile elde Yukarıdaki kod im kullanarak

// get today and clear time of day 
Calendar cal = Calendar.getInstance(); 

// get start of this week in milliseconds 
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); 
cal.add(Calendar.DAY_OF_YEAR, 7*(WeekIndex-1)); 
result = dateformate.format(cal.getTime()); 

cal.add(Calendar.DAY_OF_YEAR, 6); 

result=result+" - " + dateformate.format(cal.getTime()); 

.

Not: değişen haftayı endeksi değişiklikleri bu kadar Pazar-Cumartesi

+1

"i need - değeri 1 değişen Pazartesi dan gün başlar Haftanın başlangıç ​​gününü değiştirmek için "- in * what *? 'CalendarView'? Başka bir şey? – CommonsWare

+0

kodunuzu gönderin. – Blackbelt

+0

benim yazı şimdi kontrol ve kötü ingilizce için üzgünüm –

cevap

20

Takvim günleri başlatmak gün boyunca değerleri 1-7 çünkü ben sonuca gün ekleyin olamaz. getFirstDayOfWeek, kullanılan Locale'a bağlı olarak bu değerlerden (genellikle Pazartesi veya Pazar) birini döndürür. Calendar.getInstance, telefonunuzun ayarlarına bağlı olarak varsayılan Locale numaralı telefonu kullanır ve bu durumda da haftanın ilk günü Pazartesi gününe sahiptir. Locale

Tek çözüm diğer kullanmak olacaktır:

Calendar.getInstance(Locale.US).getFirstDayOfWeek() 

değeri olan 1 döneceğini Calendar.SUNDAY

Diğer çözüm gibi hafta değerinin seçilen gününü kullanmak olacaktır

cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); 

Calendar sorunu,numaralı telefonun iç haftanın ilk günüdür.da. Örnek: Locale kullanmak istemiyorsanız ya da haftanın ilk günü olarak geçen gün gerekiyorsa

Calendar mondayFirst = Calendar.getInstance(Locale.GERMANY); //Locale that has Monday as first day of week 
mondayFirst.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 
log(DateUtils.formatDateTime(context, mondayFirst.getTimeInMillis(), 0)); 
//prints "May 19" when runned on May 13 

Calendar sundayFirst = Calendar.getInstance(Locale.US); //Locale that has Sunday as first day of week 
sundayFirst.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 
log(DateUtils.formatDateTime(context, sundayFirst.getTimeInMillis(), 0)); 
//prints "May 12" when runned on May 13 

, kendi haftanın başlangıcını hesaplamak için iyi olabilir.

0

weekday = getWeekdayOfMonth();

int day = (weekday - firstweek) < 0 ? (7 - (firstweek - weekday)) : (weekday - firstweek); 

"firstweek" Size ilk günü

o zaman size basit bir yöntem var show.If gereken ilk günü hesaplayabilir istediklerini demektir, lütfen bize bildirin. 0 değerini değiştirerek

3
GregorianCalendar cal = new GregorianCalendar(yy, currentMonth, 0); 

thks -

umut bu yardımcı olur .. vb Pazar itibaren gün başlar ve ve çalışır :)

+0

İyi çalışıyor, Teşekkürler +1 –

İlgili konular