`

Calendar类getActualMaximum方法与getMaximum方法

    博客分类:
  • java
 
阅读更多

在编写一个计算季度开始时间和结束时间的代码时,发现有些季度的结束年月不正确,比实际大了一天。

代码如下:

/**
	 * 得到某一时间所在季度的开始时间
	 * 
	 * @param cal
	 *            要判断的时间
	 * @return
	 */
	private Calendar getStartCalOfQuarter(Calendar cal) {
		int jd = this.getQuarter(cal); // 季度
		int startMonth = jd * 3 - 3;// 季度的开始月
		int year = cal.get(Calendar.YEAR);
		Calendar startCal = Calendar.getInstance();// 季度开始时间
		startCal.set(year, startMonth, 1, 0, 0,0);
		return startCal;
	}

	/**
	 * 得到某一时间所在季度的结束时间
	 * 
	 * @param cal
	 *            要判断的时间
	 * @return
	 */
	private Calendar getEndCalOfQuarter(Calendar cal) {
		Calendar endCal = Calendar.getInstance();// 季度结束时间
		Calendar startCal = this.getStartCalOfQuarter(cal);// 得到季度开始日期
		System.out.println("开始日期:" + startCal.get(Calendar.YEAR) + "年" + startCal.get(Calendar.MONTH) + "月" + startCal.get(Calendar.DAY_OF_MONTH) + "日"
				+ startCal.get(Calendar.HOUR_OF_DAY) + "时" + startCal.get(Calendar.SECOND) + "秒");
		{// 结束日期
			endCal = startCal;
			endCal.add(Calendar.MONTH, 2);
			int dayOfEndMonth = endCal.getMaximum
(Calendar.DAY_OF_MONTH);
			System.out.println("dateOfEndMonth:"+dayOfEndMonth);
			endCal.set(Calendar.DATE, dayOfEndMonth);// 设置季度结束日期的 日子
			endCal.set(Calendar.HOUR_OF_DAY, 23); // 设置结束日期的小时
			endCal.set(Calendar.SECOND, 59);// 设置结束日期的秒
		}
		System.out.println("结束日期:" + endCal.get(Calendar.YEAR) + "年" + endCal.get(Calendar.MONTH) + "月" + endCal.get(Calendar.DAY_OF_MONTH) + "日"
				+ endCal.get(Calendar.HOUR_OF_DAY) + "时" + endCal.get(Calendar.SECOND) + "秒");
		return endCal;
	}

 后来发现用endCal.getMaximum(Calendar.DAY_OF_MONTH)得到的都是31。

 

查资料,用getActualMaximum(int)方法才能得到实际最大值。Java API让人看得茫然……(英文不好)

 

getMinimum 与getActualMinimum方法也是这样。

分享到:
评论

相关推荐

    如何用java里的Calendar类编写万年历

    Calendar 类提供了多种方法来获取日期和时间信息,从而使得我们可以轻松地生成万年历。 Calendar 类的基本概念 在 Java 中,Calendar 类是 java.util 包下的一个类,用于代表一个日期和时间对象。Calendar 对象...

    java的Calendar时间类.pdf

    `Calendar`类还提供了`getTimeMillis()`方法,它返回当前日期和时间的毫秒值,这对于与Java的`Date`类交互非常有用。同时,`add`方法允许你根据日历规则增加或减少某个字段的值,比如增加一个月或一天。 比较时间...

    Calendar常用属性

    3. 获取一年中的天数:`getActualMaximum()`方法可以得到指定年份和月份的最大天数,如`calendar.getActualMaximum(Calendar.DAY_OF_MONTH)`。 4. 时间比较:`before()`和`after()`方法可以用来比较两个`Calendar`...

    java API 在包java.util中有一个GregorianCalendar类,使用它可以得到一年内某个月的日历.zip

    int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); ``` 此外,`GregorianCalendar`还提供了添加和减去日期字段的方法,如`add`和`roll`。如果你想获取下一个月的日期,可以这样操作: ```java...

    基于Java的实例源码-Calendar万年历.zip

    `Calendar`类提供了`before()`和`after()`方法来比较两个日期,以及`getTime()`方法将`Calendar`对象转换为`Date`对象,便于进行日期比较。 此外,`Calendar`类支持国际化,通过`Locale`参数来获取不同地区的日期...

    Java基于Calendar类输出指定年份和月份的日历代码实例

    Calendar类提供了多种方法来获取当前日期和时间,例如get(int field)方法可以获取当前日期的指定字段,例如年、月、日、星期等。同时,Calendar类也提供了set(int field, int value)方法来设置当前日期的指定字段。 ...

    Java-Date 类的学习总结.pdf

    在计算某一月份的最大天数时,可以使用 Calendar 类的 getActualMaximum 方法。首先,需要使用 getInstance 方法获取当前时间,然后使用 clear 方法清除所有的时间信息,接着使用 set 方法设置年份和月份,最后使用 ...

    java技术点,常用的方法处理

    `Calendar`类还提供了`getActualMaximum(Calendar.DAY_OF_WEEK_IN_MONTH)`和`getActualMinimum(Calendar.DAY_OF_WEEK_IN_MONTH)`方法,它们分别返回月份中最大和最小的周数。 在实际应用中,`Calendar`类常与其他...

    java 获取上月、一个月最后一天、周一、周日、本月日期

    获取一个月最后一天可以使用 Calendar 类的 getActualMaximum 方法,获取当前月份的最大的天数。然后可以使用 set 方法设置日期,并格式化输出。代码如下: ```java int MaxDay = c.getActualMaximum(Calendar.DAY_...

    精品专题(2021-2022年收藏)JAVA处理日期时间常用方法.doc

    `java.util.Calendar`是一个抽象类,它提供了一种将日期和时间字段(如年、月、日、小时等)与特定瞬间(以毫秒为单位)之间转换的方法。例如,你可以创建一个`Calendar`实例,然后通过`add()`方法来增加或减少日期...

    java利用Calendar类打印日历

    Java 中的 Calendar 类是一个功能强大的日期和时间处理工具,提供了许多有用的方法来操作日期和时间。在本文中,我们将详细介绍如何使用 Calendar 类来打印日历。 首先,让我们来了解一下 Calendar 类的基本使用。...

    java中的循环日期.docx

    在 Java 中,计算某一月份的最大天数可以使用 Calendar 类的 getActualMaximum() 方法。该方法返回指定日历字段的最大值。在计算某一月份的最大天数时,需要先 clear Calendar 对象,然后设置年份和月份,最后使用 ...

    【Java精品】Java中Date各种相关用法.doc

    使用Calendar类的getActualMaximum方法可以获取指定月份的最大天数。例如,`time.getActualMaximum(Calendar.DAY_OF_MONTH)`会返回给定年份和月份的最大天数。注意,月份是从0开始的,所以1月是`Calendar.JANUARY`...

    java 日期算法

    例如,计算某一月份的最大天数,可以使用 `Calendar` 类的 `getActualMaximum` 方法。首先,需要创建一个 `Calendar` 对象,设置年和月,然后使用 `getActualMaximum` 方法获取该月份的最大天数。 日期类的格式化...

    日期类的加减及java中所以日期类的操作算法大全

    `Calendar`类是Java中处理日期和时间的核心类之一,它提供了一系列的方法来获取和设置日期、时间的各种组件,如年、月、日、小时、分钟、秒等。例如,创建一个`Calendar`实例并设置特定的年份: ```java Calendar ...

    java操作日期大全

    此方法与上一个类似,但它将字符串转换为`java.sql.Date`。注意这里默认使用了`"yyyy-MM-dd"`作为日期格式。 ##### 1.3 `java.util.Date`到字符串 ```java public static String toStrDateFromUtilDateByFormat...

    常用java date方法集合

    通过本文,我们将详细了解如何计算特定月份的最大天数、实现`Calendar`与`Date`之间的转换、格式化日期时间、计算一年中的星期数、使用`add()`和`roll()`方法调整日期,以及计算两个日期间的间隔天数。 #### 1. ...

    Java-Date 类的学习总结.docx

    int weekno = cal.get(Calendar.WEEK_OF_YEAR); ``` 也可以计算一年中的第几星期是几号,例如: ```java SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal...

Global site tag (gtag.js) - Google Analytics