如何知道某一年的某月有多少天?
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
发布于 2012-01-20 19:08:52
java.util.Calendar的代码
如果您必须使用java.util.Calendar
,我怀疑您需要:
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
Joda时间的代码
然而,就我个人而言,我建议首先使用Joda Time而不是java.util.{Calendar, Date}
,在这种情况下,您可以使用:
int days = chronology.dayOfMonth().getMaximumValue(date);
请注意,与其单独解析字符串值,不如获取您正在使用的任何日期/时间API来解析它。在java.util.*
中,您可以使用SimpleDateFormat
;在Joda Time中,您可以使用DateTimeFormatter
。
发布于 2012-01-20 19:09:36
您可以使用Calendar.getActualMaximum
方法:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
int numDays = calendar.getActualMaximum(Calendar.DATE);
发布于 2016-03-08 01:54:20
java.time.LocalDate
从Java1.8开始,您可以在java.time.LocalDate
上使用lengthOfMonth
方法
LocalDate date = LocalDate.of(2010, 1, 19);
int days = date.lengthOfMonth();
https://stackoverflow.com/questions/8940438
复制相似问题