java - विशेष वर्ष के विशेष महीने में दिनों की संख्या?




datetime calendar (10)

java.time.LocalDate

जावा 1.8 से, आप lengthOfMonth पर विधि lengthOfMonth उपयोग कर सकते हैं। java.time.LocalDate :

LocalDate date = LocalDate.of(2010, 1, 19);
int days = date.lengthOfMonth();

कैसे पता चलेगा कि किस वर्ष विशेष वर्ष का विशेष महीना है?

String date = "2010-01-19";
String[] ymd = date.split("-");
int year = Integer.parseInt(ymd[0]);
int month = Integer.parseInt(ymd[1]);
int day = Integer.parseInt(ymd[2]);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month);
int daysQty = calendar.getDaysNumber(); // Something like this

Java.util.Calendar के लिए कोड

अगर आपको java.util.Calendar का उपयोग करना है, तो मुझे संदेह है कि आप चाहते हैं:

int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

जोडा समय के लिए कोड

व्यक्तिगत रूप से, हालांकि, मैं java.util.{Calendar, Date} बजाय जोडा समय का उपयोग करने का सुझाव java.util.{Calendar, Date} से शुरू करने के लिए, इस मामले में आप इसका उपयोग कर सकते हैं:

int days = chronology.dayOfMonth().getMaximumValue(date);

ध्यान दें कि स्ट्रिंग मानों को अलग-अलग पार्स करने के बजाए, आप जिस भी दिनांक / समय एपीआई का उपयोग कर रहे हैं उसे पाने के लिए बेहतर होगा। SimpleDateFormat java.util.* आप SimpleDateFormat उपयोग कर सकते हैं; जोडा समय में आप डेटटाइमफॉर्मेटर का उपयोग करेंगे।


आप कैलेंडर.getActualMaximum विधि का उपयोग कर सकते हैं:

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, year);
    calendar.set(Calendar.MONTH, month-1);
    int numDays = calendar.getActualMaximum(Calendar.DATE);

और महीना -1 महीने की वजह से महीने की मूल संख्या लेता है जबकि विधि में कैलेंडर.क्लास में नीचे तर्क होता है

   public int getActualMaximum(int field) {
      throw new RuntimeException("Stub!");
   }

और (int फ़ील्ड) नीचे जैसा है।

    public static final int JANUARY = 0;
    public static final int NOVEMBER = 10;
    public static final int DECEMBER = 11;

कैलेंडर बनाएं, साल और महीना सेट करें और getActualMaximum उपयोग getActualMaximum

int iYear = 1999;
int iMonth = Calendar.FEBRUARY; // 1 (months begin with 0)
int iDay = 1;

// Create a calendar object and set year and month
Calendar mycal = new GregorianCalendar(iYear, iMonth, iDay);

// Get the number of days in that month
int daysInMonth = mycal.getActualMaximum(Calendar.DAY_OF_MONTH); // 28

टेस्ट : लीप वर्ष में एक महीने का प्रयास करें:

mycal = new GregorianCalendar(2000, Calendar.FEBRUARY, 1);
daysInMonth= mycal.getActualMaximum(Calendar.DAY_OF_MONTH);      // 29

संपादित करें: जावा 8 के लिए समाधान

@ वॉरेन एम। नोकोस। यदि आप जावा 8 की नई डेट और टाइम एपीआई का उपयोग करने की कोशिश कर रहे हैं, तो आप java.time.YearMonth क्लास का उपयोग कर सकते हैं।

// Get the number of days in that month
YearMonth yearMonthObject = YearMonth.of(1999, 2);
int daysInMonth = yearMonthObject.lengthOfMonth(); //28  

टेस्ट: लीप वर्ष में एक महीने का प्रयास करें:

yearMonthObject = YearMonth.of(2000, 2);
daysInMonth = yearMonthObject.lengthOfMonth(); //29 

निम्नलिखित विधि आपको किसी विशेष माह में दिनों की संख्या प्रदान करेगी

public static int getNoOfDaysInAMonth(String date) {

        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return (cal.getActualMaximum(Calendar.DATE));
    }

पुरानी Calendar एपीआई का उपयोग टालना चाहिए।

जावा 8 या उच्चतर संस्करण में, यह YearMonth साथ किया जा सकता है।

उदाहरण कोड:

int year = 2011;
int month = 2;
YearMonth yearMonth = YearMonth.of(year, month);
int lengthOfMonth = yearMonth.lengthOfMonth();
System.out.println(lengthOfMonth);

यह मेरे लिए ठीक काम किया।

यह एक नमूना आउटपुट है

import java.util.*;

public class DaysInMonth{ 

public static void main(String args []){ 

Scanner input = new Scanner(System.in); 
System.out.print("Enter a year:"); 

int year = input.nextInt(); //Moved here to get input after the question is asked 

System.out.print("Enter a month:"); 
int month = input.nextInt(); //Moved here to get input after the question is asked 

int days = 0; //changed so that it just initializes the variable to zero
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0)||(year % 400 == 0); 

switch (month){ 
case 1: 
days = 31; 
break; 
case 2: 
if (isLeapYear) 
days = 29; 
else 
days = 28; 
break; 
case 3: 
days = 31; 
break; 
case 4: 
days = 30; 
break; 
case 5: 
days = 31; 
break; 
case 6: 
days = 30; 
break; 
case 7: 
days = 31; 
break; 
case 8: 
days = 31; 
break; 
case 9: 
days = 30; 
break; 
case 10: 
days = 31; 
break; 
case 11: 
days = 30; 
break; 
case 12: 
days = 31; 
break; 
default: 
String response = "Have a Look at what you've done and try again";
System.out.println(response); 
System.exit(0); 
} 
String response = "There are " +days+ " Days in Month "+month+ " of Year " +year+ ".\n"; 
System.out.println(response); // new line to show the result to the screen. 
} 
} //[email protected]

    String date = "11-02-2000";
    String[] input = date.split("-");
    int day = Integer.valueOf(input[0]);
    int month = Integer.valueOf(input[1]);
    int year = Integer.valueOf(input[2]);
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR,year);
    cal.set(Calendar.MONTH,month-1);
    cal.set(Calendar.DATE, day);
    //since month number starts from 0 (i.e jan 0, feb 1), 
    //we are subtracting original month by 1
    int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    System.out.println(days);

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/*
 * 44. Return the number of days in a month
 * , where month and year are given as input.
 */
public class ex44 {
    public static void dateReturn(int m,int y)
    {
        int m1=m;
        int y1=y;
        String str=" "+ m1+"-"+y1;
        System.out.println(str);
        SimpleDateFormat sd=new SimpleDateFormat("MM-yyyy");

        try {
            Date d=sd.parse(str);
            System.out.println(d);
            Calendar c=Calendar.getInstance();
            c.setTime(d);
            System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public static void main(String[] args) {
dateReturn(2,2012);


    }

}

public class Main {

    private static LocalDate local=LocalDate.now();
    public static void main(String[] args) {

            int month=local.lengthOfMonth();
            System.out.println(month);

    }
}




calendar