java - सरलिकृत प्रारूप-क्यों कैलेंडर.MONTH गलत रूप से जनवरी माह के लिए पिछले महीने मूल्य(यानी दिसंबर 2015)उत्पन्न करता है?




calendar simpledateformat (3)

मैं मौजूदा महीने से पिछले 12 महीनों के मूल्यों को प्राप्त करने की कोशिश कर रहा हूं, सरल उपयोग करके। लेकिन पिछले महीने (दिसंबर-दिसंबर 2015) मुझे हमेशा दिसंबर 2016 तक मिलता है।

कैलेंडर.सेट (कैलेंडर। MONTH, -1); यह दिसंबर -2015 लौटने वाला है, लेकिन इसकी नहीं।

मैं तर्क समझ में नहीं आता क्या कोई कृपया समझाएं आपके समय और सहायता के लिए बहुत बहुत धन्यवाद

मेरा कोड:

public static void main (String[] args) throws java.lang.Exception
{
    SimpleDateFormat month_date = new SimpleDateFormat("MMM-YYYY");

    Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MONTH, -1);


        String month_name = month_date.format(calendar.getTime());
        System.out.println("month_name : "+month_name);

}

आउटपुट:

month_name : Dec-2016

Answers

कोड के साथ कुछ मुद्दे हैं

1) आपको कैलेंडर.एड जोड़ें calendar.add(Calendar.MONTH, -1); उपयोग करना चाहिए calendar.add(Calendar.MONTH, -1); महीने का घटाना

2) दिलचस्प है कि इसके बाद भी यह month_name : Dec-2016 रूप में उत्पादन मुद्रित करेगा month_name : Dec-2016 ऐसा इसलिए है क्योंकि आपके SimpleDateFormat में एक समस्या है, यानी आपने इस वर्ष का उल्लेख पूंजी Y रूप में किया है, जो Week year बदलकर y को बदल देगा।

आप यहां SimpleDateFormat प्रलेख का उल्लेख कर सकते हैं

संशोधित कोड होगा:

public static void main (String[] args) throws java.lang.Exception
    {
         SimpleDateFormat month_date = new SimpleDateFormat("MMM-yyyy");
         Calendar calendar = Calendar.getInstance();
         calendar.add(Calendar.MONTH, -1);

         String month_name = month_date.format(calendar.getTime());
         System.out.println("month_name : "+month_name);
   }

महीनों को ठीक करने के लिए आप यह कर सकते हैं:

calendar.add(Calendar.MONTH, -1);

आशा है कि यह आपको मदद करता है


आपके SimpleDateFormat के पैटर्न में एक त्रुटि है। यह होना चाहिए

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");




java calendar simpledateformat