在调查一个报表的计算问题时,偶然发现报表会报错
根据错误信息看到,是生成SHEETName的时候,出现了重复的名字。SheetName都是以月份的英文简写作为名称的。而且是循环得到的。怎么会重复呢?这个报表在这个处理的时候是采用了一下方式:
DateFormat df = new SimpleDateFormat("MMM", Locale.US);
Calendar cal = Calendar.getInstance();
for(int i=0;i<12;i++){
cal.set(Calendar.MONTH,i);
System.out.println(df.format(cal.getTime()));
}
}
输出结果
【Wed Jan 30 11:04:18 GMT+08:00 2013
Sat Mar 02 11:04:18 GMT+08:00 2013
Sat Mar 02 11:04:18 GMT+08:00 2013
Tue Apr 02 11:04:18 GMT+08:00 2013
Thu May 02 11:04:18 GMT+08:00 2013
Sun Jun 02 11:04:18 GMT+08:00 2013
Tue Jul 02 11:04:18 GMT+08:00 2013
Fri Aug 02 11:04:18 GMT+08:00 2013
Mon Sep 02 11:04:18 GMT+08:00 2013
Wed Oct 02 11:04:18 GMT+08:00 2013
Sat Nov 02 11:04:18 GMT+08:00 2013
Mon Dec 02 11:04:18 GMT+08:00 2013】
其他月份都没问题,二月就“出错了”。这是怎么回事呢?原来Calendar在进行set的时候很贴心的去检查set后的时间是否合法。因为今天是12月30号,设置月份为2月之后,2月是没有30号的。而所谓的2月30号也就是3月2号。
避免这个问题最简单的修改方式就是先把日期调整到1号,每个月都有1号嘛。这样就不会出现类似问题了。
相关推荐
【小程序插件 Vue Calendar 日历】是专门为Vue.js框架设计的一款高效、易用的日历组件,适用于微信小程序开发。此组件充分利用了Vue.js的特性,提供了丰富的功能和自定义选项,使得开发者能够快速构建具有日历展示...
在这个“wx-calendar-master.zip”压缩包中,包含了一个专门针对微信小程序设计的日历组件,它支持农历日期显示以及月份视图和周视图功能,这在很多需要日期选择或者日程管理的应用场景中非常实用。 日历组件是UI...
2. **自定义设置**:开发者可以为每个日期设定初始样式,这包括但不限于背景色、字体颜色等,使得日历的视觉效果可以根据应用的品牌风格进行调整。此外,点击日期后的回调功能允许开发者添加特定的逻辑,如检查某...
水平滚动当前月份的日历控件,通常被称为WeekCalendar,是一种用户界面组件,它允许用户以横向方式查看和操作日历。这种设计模式在现代Web应用和移动应用中颇为流行,因为它提供了更直观、灵活的用户体验,尤其是在...
view: 'month', // 默认显示为月份视图 events: [{ // 添加事件数据 date: '2022-07-01', title: '国庆节' }] }); ``` ### 功能扩展 除了基础的日历展示,calendar.js还支持添加自定义事件,如点击日历项触发...
需要注意的是,月份是以0为一月开始计数的,所以0实际上代表了1月。 ### 3. 日期格式的转换 在Java中,我们可以使用`SimpleDateFormat`类来格式化和解析日期字符串。这个类允许我们指定日期/时间的格式,然后将`...
可切换月份的日历Calendar视图,不错的日历视图,可以上下滑动切换月份,可以点击某一天,进入查看该天的事件(按小时分),可以添加事件等,片段安卓源码频道。 This project is meant for people who want to ...
然而,原始版本可能存在一些限制,如语言切换、位置设置以及事件处理等方面的问题。针对这些问题,开发者进行了改进,使其更加灵活和实用。 改进点如下: 1. **语言切换**:修复了原组件无法切换语言的bug,现在...
首先,`Calendar`类不是线程安全的,因此在多线程环境中使用时需要额外注意同步问题。在Android中,我们通常会通过`getInstance()`静态方法获取一个`Calendar`实例。这个方法会返回当前系统的时间,即`java.util....
2. `get(int field)`:获取指定字段(如月份、日期、小时等)的值。 3. `set(int field, int value)`:设置指定字段的值。 4. `add(int field, int amount)`:在指定字段上增加或减少一定量的时间。 5. `getTime()`...
`UICalendar`提供了流畅的动画效果,使得月份切换更加自然。 4. **指定日期设置**:开发者可以通过API设置默认显示的日期,或者限制用户只能选择某个范围内的日期,这对于预订系统或活动报名等功能非常有用。 5. *...
官方文档通常会提供详细的API参考、配置选项以及常见问题解答,是学习和使用该库的重要资源。 总的来说,Calendar-js作为一个强大的JavaScript日历组件,提供了丰富的功能和高度的可定制性,对于任何需要日期选择...
- 注意,`Calendar` 的月份是从0开始的(即0表示一月,1表示二月等)。 - **显示日期时间信息**: - 使用 `get()` 方法获取当前日期时间的各个组成部分,如月份、日期、年份、小时、分钟和秒等。 - 在输出月份时...
例如,`int year = calendar.get(Calendar.YEAR)`将获取当前设置的年份。 4. **增加/减少日期**:`add`方法可以用来增加或减少某个日期字段。例如,`calendar.add(Calendar.DAY_OF_MONTH, 1)`会将日期向前推进一天...
`Calendar`类提供了一系列的功能来帮助开发者处理复杂的日期计算问题,比如日期的加减、获取特定日期组件等。 #### 二、Calendar类的基本概念 `Calendar`类是一个抽象类,它代表了一个特定时刻(瞬间)的具体日期...
例如,`calendar.get(Calendar.YEAR)` 获取年份,`calendar.get(Calendar.MONTH)` 获取月份(注意,月份是从0开始的,1代表二月),`calendar.get(Calendar.DAY_OF_MONTH)` 获取月份中的第几天,`calendar.get...
`getInstance()`方法返回一个配置了当前日期和时间的`Calendar`实例,可以用于获取或设置各种日期和时间字段。 ##### 2. 输出日期和时间字段 ```java System.out.println("ERA:" + calendar.get(Calendar.ERA)); ...
这个方法会返回一个具体`Calendar`实现的实例,通常是根据系统的默认区域设置来创建。例如: ```java Calendar c = Calendar.getInstance(); ``` `Calendar`类提供了多种`set`方法来设置日期和时间的不同字段,如...
5. **本地化支持**:考虑到全球不同的日期格式和节假日,可能会有针对不同地区的语言和文化设置。 6. **事件管理**:添加、删除和查看日程事件的逻辑。 7. **测试代码**:确保程序的正确性和稳定性,可能包括单元...
如果需要修改某个属性,可以使用`set()`方法,如`calendar.set(Calendar.MONTH, Calendar.DECEMBER)`将月份设置为12,即December。 除了基本的属性操作,`Calendar`还提供了以下功能: 1. 添加或减去时间单位:`...