我有一个代码,它给出了特定事件的日期,如:
String date=date1.substring(3,5)+"/"+date1.substring(0,2)+"/"+date1.substring(6,10);
我想要上述日期所属月份的开始日期和结束日期..
请帮助。
答案 0 :(得分:4)
获取月份的最长日期
cal.getActualMaximum(Calendar.DAY_OF_MONTH)
并且至少
cal.getActualMinimum(Calendar.DAY_OF_MONTH)
注意: cal
是Calendar
的实例
答案 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
,然后您就可以获得所有字段。字段为YEAR
,DAY
编辑(评论)
我会假设你的代码片段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 javadoc和SimpleDateFormat javadoc。它就在那里,我相信它比我更好解释。