java - एंड्रॉइड कैलेंडर स्ट्रिंग के रूप में सप्ताह का वर्तमान दिन मिलता है




android calendar null dayofweek (6)

मैंने निम्न कार्य करके इसे पूरा किया:

String weekDay;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);

Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
  • "ईईईई" के लिए दिन के स्वरूप का उपयोग करें, पूरे सप्ताह के दिन का नाम वापस आ जाएगा, अर्थात मंगलवार
  • "ई" के लिए दिन प्रारूप का उपयोग संक्षिप्त नाम वापस करेगा, अर्थात् मंगल
  • एंड्रॉइड में इस प्रारूप को वापस लाने के लिए एक और लाभ यह है कि यह स्थानीय स्तर पर आधारित सप्ताह के दिन का अनुवाद करेगा।

आप अधिक जानने के लिए SimpleDateFormat की समीक्षा करना चाहेंगे । मुझे लगता है कि यह एक साफ दृष्टिकोण है जिसमें आपको स्विच या अगर कथन की ज़रूरत नहीं है अगर स्ट्रिंग वैल्यू प्राप्त करने की आवश्यकता है।

मैंने इस वास्तविक सप्ताह के दिन के नाम से एक स्ट्रिंग प्राप्त करने की कोशिश की:

            Calendar c = Calendar.getInstance();
            int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

            if (c.get(Calendar.MONDAY) == dayOfWeek) weekDay = "monday";
            else if (c.get(Calendar.TUESDAY) == dayOfWeek) weekDay = "tuesday";
            else if (c.get(Calendar.WEDNESDAY) == dayOfWeek) weekDay = "wednesday";
            else if (c.get(Calendar.THURSDAY) == dayOfWeek) weekDay = "thursday";
            else if (c.get(Calendar.FRIDAY) == dayOfWeek) weekDay = "friday";
            else if (c.get(Calendar.SATURDAY) == dayOfWeek) weekDay = "saturday";
            else if (c.get(Calendar.SUNDAY) == dayOfWeek) weekDay = "sunday";

लेकिन weekDay हमेशा अशक्त रहता है और वास्तव में मुझे पता नहीं है क्यों कि डिबगर कहता है कि उस dayOfWeek c.get(Calendar.THURSDAY) 5 है, इसलिए मुझे c.get(Calendar.THURSDAY) बराबर होना चाहिए।


बस निम्नलिखित करें:

    Date date = new Date();
    CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)

इसे इस्तेमाल करे

import java.text.DateFormatSymbols;
import java.util.Date;
...
String[] weekdays = new DateFormatSymbols().getWeekdays();
String[] month = new DateFormatSymbols().getMonths();
System.outprintln(weekdays[date.getDay()+1]+","+month[date.getMonth()]+" "+date.getDate());

आशा है कि कोडक यू मदद करता है :)


c.get का उपयोग करने की कोई आवश्यकता नहीं थी

    Calendar c = Calendar.getInstance();
    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);                

    if (Calendar.MONDAY == dayOfWeek) weekDay = "monday";
    else if (Calendar.TUESDAY == dayOfWeek) weekDay = "tuesday";
    else if (Calendar.WEDNESDAY == dayOfWeek) weekDay = "wednesday";
    else if (Calendar.THURSDAY == dayOfWeek) weekDay = "thursday";
    else if (Calendar.FRIDAY == dayOfWeek) weekDay = "friday";
    else if (Calendar.SATURDAY == dayOfWeek) weekDay = "saturday";
    else if (Calendar.SUNDAY == dayOfWeek) weekDay = "sunday";

    System.out.println(weekDay);

और आउटपुट:

thursday

यदि आप c.get साथ इस कोड के साथ मूल्यों को मुद्रित करने का प्रयास करते हैं तो आप अपनी त्रुटि देख सकते हैं

    System.out.println(c.get(Calendar.MONDAY));
    System.out.println(c.get(Calendar.TUESDAY));
    System.out.println(c.get(Calendar.WEDNESDAY));
    System.out.println(c.get(Calendar.THURSDAY));
    System.out.println(c.get(Calendar.FRIDAY));
    System.out.println(c.get(Calendar.SATURDAY));
    System.out.println(c.get(Calendar.SUNDAY));

उदाहरण के लिए मुझे मिलते हैं:

7
33
3
15
227
5
2013

और परिणाम गलत होगा, मेरे मामले में मुझे Sunday रूप में Sunday weekDay यदि मैं अपना कोड इस्तेमाल करता weekDay तो


आपको कैलेंडर के साथ दिन ओफ़वाईक की तुलना सीधे करना है। सोमवार आदि। नीचे कोड देखें

इसके अलावा, मैंने ब्रैकेट्स को चारों ओर रखा है अगर दूसरा कोड प्रवाह के लिए इंडेंटेशन पर भरोसा मत करो, स्पष्ट रूप से ब्रैकेट डालें, भले ही आपके-दूसरे के पास केवल एक कथन है।

    public static void main(String[] args) {

    String weekDay = "";

    Calendar c = Calendar.getInstance();
    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

    if (Calendar.MONDAY == dayOfWeek) {
        weekDay = "monday";
    } else if (Calendar.TUESDAY == dayOfWeek) {
        weekDay = "tuesday";
    } else if (Calendar.WEDNESDAY == dayOfWeek) {
        weekDay = "wednesday";
    } else if (Calendar.THURSDAY == dayOfWeek) {
        weekDay = "thursday";
    } else if (Calendar.FRIDAY == dayOfWeek) {
        weekDay = "friday";
    } else if (Calendar.SATURDAY == dayOfWeek) {
        weekDay = "saturday";
    } else if (Calendar.SUNDAY == dayOfWeek) {
        weekDay = "sunday";
    }

    System.out.println(weekDay);

}

चूंकि आप गतिशील रूप से रिसीवर को पंजीकृत करते हैं, आप निर्दिष्ट कर सकते हैं कि एक और धागा (यूआई थ्रेड के अलावा) onReceive() संभालता है। यह registerReceiver() रिसीवर registerReceiver() के हैंडलर पैरामीटर के माध्यम से किया जाता है।

उस ने कहा, अगर आपने एक और हैंडलर निर्दिष्ट नहीं किया है, तो यह हमेशा यूआई थ्रेड पर संभाला जाएगा।







java android calendar null dayofweek