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

问题描述 投票:0回答:4

我有一个代码,可以给出特定事件的日期,例如:

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

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

请帮忙。

java
4个回答
4
投票

使用

Calendar.getActualMaximum()

获取该月的最大日期

cal.getActualMaximum(Calendar.DAY_OF_MONTH)

并且最低限度

cal.getActualMinimum(Calendar.DAY_OF_MONTH)

注意:

cal
Calendar

的实例


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)
。)


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 javadocSimpleDateFormat javadoc。一切都在那里,我相信它比我解释得更好。


0
投票

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() ;
© www.soinside.com 2019 - 2024. All rights reserved.