想要从特定日期获取一个月的开始和结束日期

时间:2011-07-22 07:26:48

标签: java

我有一个代码,它给出了特定事件的日期,如:

String date=date1.substring(3,5)+"/"+date1.substring(0,2)+"/"+date1.substring(6,10);

我想要上述日期所属月份的开始日期和结束日期..

请帮助。

3 个答案:

答案 0 :(得分:4)

使用Calendar.getActualMaximum()

获取月份的最长日期

cal.getActualMaximum(Calendar.DAY_OF_MONTH)

并且至少

cal.getActualMinimum(Calendar.DAY_OF_MONTH)

注意: calCalendar的实例

答案 1 :(得分:4)

我个人建议使用Joda Time几乎所有日期和时间都在Java中工作。

首先,我将原始值解析为LocalDate,然后:

// Parse using DateTimeFormatter.parseDateTime().toLocalDate();
LocalDate original = ...; 
LocalDate startOfMonth = original.dayOfMonth().withMinimumValue();
LocalDate endOfMonth = original.dayOfMonth().withMaximumValue();

(对于月初,当然可以使用original.withDayOfMonth(1)。)

答案 2 :(得分:3)

您应该考虑使用java.util.Calendar。您提供了java.util.Date,然后您就可以获得所有字段。字段为YEARDAY

编辑(评论)

我会假设你的代码片段date1是一个字符串......你似乎也知道格式(mm / dd / yyyy或dd / mm / yyyy),所以首先你需要一个SimpleDateFormat

final SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); // or dd/MM/yyyy

然后你需要一种解析日期的方法...解析日期意味着从字符串转换为日期对象:

final Date date = dateFormat.parse(date1); // date1 is a date in a string in the given format

您现在有Date ...您只需要使用java.util.Calendar

从中提取信息
final Calendar calendar = new Calendar();
calendar.setTime(date);

使用calendar,您可以获得任何与日期相关的信息。这个月的第一天是微不足道的...任何一个月从第一天开始......但是对于该月的最后一天,您需要获得DAY_OF_MONTH字段的最大值:

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

无论如何,我没有做任何这些事情......随意浏览Calendar javadocSimpleDateFormat javadoc。它就在那里,我相信它比我更好解释。