我有一个代码,可以给出特定事件的日期,例如:
String date=date1.substring(3,5)+"/"+date1.substring(0,2)+"/"+date1.substring(6,10);
我想要上述日期所属月份的开始日期和结束日期..
请帮忙。
Calendar.getActualMaximum()
获取该月的最大日期
cal.getActualMaximum(Calendar.DAY_OF_MONTH)
并且最低限度
cal.getActualMinimum(Calendar.DAY_OF_MONTH)
注意:
cal
是 Calendar
的实例
我个人建议使用 Joda Time 来处理 Java 中的几乎所有日期和时间工作。
LocalDate
,然后:
// Parse using DateTimeFormatter.parseDateTime().toLocalDate();
LocalDate original = ...;
LocalDate startOfMonth = original.dayOfMonth().withMinimumValue();
LocalDate endOfMonth = original.dayOfMonth().withMaximumValue();
(对于月初,您当然可以使用
original.withDayOfMonth(1)
。)
您应该考虑使用
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。一切都在那里,我相信它比我解释得更好。
String date=date1.substring(3,5)+"/"+date1.substring(0,2)+"/"+date1.substring(6,10);
DateTimeFormatter
类。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu" ) ;
LocalDate
获取仅限日期的值。
LocalDate ld = LocalDate.parse( "01/23/2025" );
YearMonth
对象。
YearMonth ym = YearMonth.from( ld ) ;
审讯第一天。
LocalDate first = ym.atDay( 1 );
LocalDate last = ym.atEndOfMonth() ;