`
megahh
  • 浏览: 16823 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java Calendar 使用中的一个不容易察觉错误

    博客分类:
  • java
阅读更多

使用Calendar取某月最大天数时,犯了一个很隐蔽的错误:

  public static int getLastDayOfMonth(int year, int month) {
    Calendar c = GregorianCalendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month - 1); // JAN. is 0
    c.set(Calendar.DATE, 1);  // 必不可少
    return c.getActualMaximum(Calendar.DAY_OF_MONTH);
  }

 

少了
    c.set(Calendar.DATE, 1);  // 必不可少
这一行后,如果执行代码时的日期是30号或31号,则返回31.
单元测试时很难发现,问题非常隐蔽,需小心.

同理,DAY_OF_WEEK,HOUR_OF_DAY 也有类似问题

分享到:
评论

相关推荐

    JavaCalendar_JAVA源码_

    首先,`Calendar`类是抽象的,不能直接实例化,通常我们通过`Calendar.getInstance()`来获取一个`Calendar`对象,它会根据系统默认时区和语言环境返回一个具体的实现。在Java 8之后,`java.time`包提供了更现代、...

    Java 之 Date 和 Calendar 实例

    这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 `Date`类是Java中最先用于表示日期和时间的类,它主要存储一个特定瞬间...

    java中时间类Date和Calendar的使用

    `Calendar`类是一个抽象类,不能直接实例化,但可以通过具体的子类如`GregorianCalendar`来创建实例。`dateDemo2()`方法中,`GregorianCalendar calendar = new GregorianCalendar();`创建了一个`Calendar`实例。`...

    java的calendar具体用法

    在Java中处理日期和时间非常常见,而`java.util.Calendar`类则是进行此类操作的核心工具之一。`Calendar`类提供了一系列的功能来帮助开发者处理复杂的日期计算问题,比如日期的加减、获取特定日期组件等。 #### 二...

    JAVA Calendar方法详解.doc

    在Java编程语言中,`Calendar`类是一个核心的日期和时间API,它用于处理各种日历系统,而不仅仅是常见的格里高利历(Gregorian Calendar)。`Calendar`是一个抽象类,这意味着它不能直接被实例化,但是提供了`...

    JAVA LunarCalendar返回农历(阴历)日期 JAR包 有包括详细DOC文档

    使用前两种构建方法时,若文本内容不为数字,getErrorMessage会返回错误信息 方法摘要 java.lang.String getErrorMessage() 返回String类型的错误信息 java.lang.String getFullInfo() 返回String类型的详细...

    Java基础之Date和Calendar类的使用方法

    在早期版本的Java中,Date类的设计受到批评,因为它的API不直观且容易导致错误。为了解决这些问题,大部分日期和时间操作被转移到了Calendar类中。 Date类的主要方法包括`getTime()`,它返回自1970年1月1日00:00:00...

    JAVA Calendar,Date类详解

    `Date`类是Java早期版本中用于表示日期和时间的类,它提供了一个时间戳,表示自1970年1月1日(格林尼治标准时间)以来的毫秒数。虽然`Date`类在Java 8之后已经不推荐直接使用,但它仍然是许多遗留代码的基础。`Date`...

    java 中Calendar日期格式的转换

    在Java编程语言中,`Calendar`类是处理日期和时间的核心工具之一,它提供了一种可以操作日期和时间字段(如年、月、日、时、分、秒等)的灵活方式。`Calendar`类是抽象的,因此我们通常通过其子类如`...

    java_Calendar控件

    总之,`Java Calendar`是一个强大且灵活的日期时间处理工具,适用于各种场景,包括但不限于数据存储、日程安排和用户界面交互。通过深入学习和实践,开发者可以充分利用其功能,提升应用程序的时间管理能力。

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

    这个类是基于格里高利历(公历)的,是Java中最常用的日期时间类之一。在给定的压缩包文件中,可能包含了关于如何使用`GregorianCalendar`来获取一年内特定月份的日历信息的练习代码,如`Exercise6_6.java`,以及...

    Java SE程序 Calendar类

    Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类Java SE程序 Calendar类...

    Java中Calendar类.pdf

    Java中的`Calendar`类是处理日期和时间的核心类,它是一个抽象类,提供了一系列方法用于在特定瞬间与一组日历字段之间进行转换和操作。自JDK 1.1起,`Calendar`类就被推荐用来处理日期和时间,因为它的功能比`Date`...

    JavaCalendar

    JavaCalendar是一个在Java环境中用于处理和显示时间的组件,尤其在Java Swing应用中,由于J Swing自身并未内置专门的时间控件,JavaCalendar就显得尤为重要。它提供了用户友好的界面,帮助开发者实现对日期和时间的...

    Java Calendar类使用总结及使用实例

    Java Calendar类提供了一个类方法getInstance()来返回Calendar的实例。获取Calendar实例的代码如下所示: ```java Calendar calendar = Calendar.getInstance(); ``` 2. 获取当前时间 获取当前时间可以使用Calendar...

    Java中用Calendar类计算周和周的起始日期

    该方法首先将日期设置到 Calendar 对象中,然后使用 set() 方法将日期设置为星期一,然后使用 getTime() 方法获取该日期。 在计算周的结束日期时,需要了解 getLastDayOfWeek() 方法,该方法用于获取给定日期所在周...

    java中Calendar类制作日历

    在Java编程语言中,`Calendar`类是处理日期和时间的核心工具之一,它提供了一系列用于操作日期和时间的方法。然而,值得注意的是,`Calendar`类本身是一个抽象类,这意味着我们不能直接实例化它来创建一个对象。为了...

    Calendar万年历

    【标题解析】:“Calendar万年历”这个标题指的是一个与日历相关的程序或者代码库,可能是一个能够显示多年甚至上百年日历的应用。在IT领域,"Calendar"通常指的是用于管理日期和时间的软件组件,它可以包括日程安排...

    java日历控件Calendar 多种类型

    "jscalendar-1.0"通常包括CSS样式文件、JavaScript源码以及示例代码("demo"),便于开发者了解如何在自己的项目中使用。 使用Java日历控件Calendar时,开发者可以通过以下方法进行操作: 1. 初始化:通过Calendar...

    JAVA new Date()或Calendar.getInstance().getTime()得到的时间不对

    首先,`java.util.Date` 是Java中的一个基础类,用于表示特定的瞬间,精确到毫秒。当我们使用 `new Date()`,它会返回当前系统时间。然而,这个时间是基于计算机系统的本地时区的。如果系统时区设置不正确,那么获取...

Global site tag (gtag.js) - Google Analytics