特定年份月份的天数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

如何知道特定年份的特定月份有多少天?

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
提问于
用户回答回答于

创建一个日历,设置年份和月份并使用 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

JAVA 8的解决方案

// 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 
用户回答回答于

java.util.Calendar的代码

如果你不得不使用java.util.Calendar,我怀疑你想要:

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

但个人而言,我建议使用时间,而不是从java.util.{Calendar, Date}开始,在这种情况下,您可以使用:

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

请注意,不是单独分析字符串值,而是使用您使用的任何日期/时间API来解析它。在java.util.*你可能使用SimpleDateFormat; 在乔达时间你会使用一个DateTimeFormatter

扫码关注云+社区