2013-05-13 6 views
5

मुझे एक छोटी सी समस्या है, मैं एक आवेदन विकसित कर रहा हूं, और मुझे सोमवार से सोमवार से दूसरे दिन (शनिवार का शनिवार) बदलने की जरूरत है। एंड्रॉइड में यह संभव है, मुझे सप्ताह की शुरुआत और तारीख को जानने के अंत की गणना करने की आवश्यकता है। (सप्ताह उदाहरण के रूप में एनो thursday शुरू होता है)एंड्रॉइड कैलेंडर: सप्ताह के शुरुआती दिन को बदलना

नोट: मैं एंड्रॉइड विकास में बस एक शुरुआत कर रहा हूँ। यहां मेरा कोड है SimpleDateFormat डेटफॉर्मेट = नया SimpleDateFormat ("डीडी/एमएम");

// 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()); 

उपर्युक्त कोड का उपयोग करके मुझे परिणाम मिल रहा है लेकिन सोमवार के साथ सप्ताह के सितारे के रूप में।

नोट: मैं परिणाम के लिए दिन नहीं जोड़ सकते हैं, क्योंकि यह है की बदलती के साथ सप्ताह सूचकांक परिवर्तन

+1

"मैं की जरूरत है सप्ताह के शुरुआती दिन को बदलने के लिए "- में * क्या *? 'CalendarView'? कुछ और? – CommonsWare

+0

अपना कोड पोस्ट करें। – Blackbelt

+0

अब मेरी पोस्ट जांचें, और खराब अंग्रेजी के लिए खेद हो सकता है –

उत्तर

20

कैलेंडर दिनों शुरू दिनों के लिए मूल्यों को 1-7 है रविवार-शनिवार। getFirstDayOfWeek प्रयुक्त Locale के आधार पर इस मान (आमतौर पर सोमवार या रविवार का) देता है। Calendar.getInstance फ़ोन की सेटिंग्स पर डिफॉल्ट Locale का उपयोग करता है, जो आपके मामले में सोमवार के सप्ताह के पहले दिन होता है।

एक समाधान अन्य उपयोग करने के लिए किया जाएगा Locale:

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

1 वापसी होगी, जिनमें से मूल्य है Calendar.SUNDAY

अन्य समाधान की तरह सप्ताह मूल्य के चुने हुए दिन का उपयोग करने के होगा

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

समस्या है, Calendarमें सप्ताह के मूल्य के अपने पहले दिन का उपयोग कर रहा हैभी। उदाहरण:

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 

आप Locale का उपयोग नहीं करना चाहते हैं या आप सप्ताह के पहले दिन के रूप में दूसरे दिन की जरूरत है, यह सबसे अच्छा होगा अपने दम पर सप्ताह के शुरू होने से गणना करने के लिए कर सकते हैं।

0
public int getWeekdayOfMonth(int year, int month){ 
    Calendar cal = Calendar.getInstance(); 
    cal.set(year, month-1, 1); 
    dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1; 
    return dayOfWeek; 
} 

सप्ताहांत = getWeekdayOfMonth();

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

"firstweek" मतलब है कि आप की शुरुआत दिन क्या चाहते

तो आप पहले दिन आप show.If चाहिए आप सरल विधि है गणना कर सकते हैं, कृपया हमें बताएं।

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

मान 0 बदलते thks - सोमवार से दिन शुरू होता है को बदलने के मूल्य 1 - रविवार से दिन शुरू होता है और इतने पर ..

आशा है कि यह मदद करता है और काम करता है :)

+0

ठीक काम कर रहा है, धन्यवाद +1 –

संबंधित मुद्दे