Java中的GregorianCalendar详解
17 浏览量
更新于2024-08-29
收藏 95KB PDF 举报
"JAVA Calendar具体解释"
Java中的`Calendar`类是一个抽象类,用于处理各种日历系统的日期和时间。它不仅支持公历(阳历),还理论上支持其他任何日历系统,如农历(阴历)。`Calendar`类提供了一套完整的接口来表示日期和时间的细节,包括年、月、日、小时、分钟、秒以及毫秒。在Java中,当我们使用`Calendar.getInstance()`获取一个`Calendar`实例时,实际上得到的是`GregorianCalendar`的实例,这是公历的一种具体实现,也是最常用的标准。
`GregorianCalendar`是基于格里高利历的,这是目前国际上广泛采用的历法,也就是我们常说的公元历。格里高利历规定一年有365天,分为12个月,其中大部分月份有30或31天,2月份有28天(闰年为29天)。而农历,比如中国的农历,每个月固定为28天,但会根据月亮的盈亏进行调整,因此农历年的天数通常少于公历年。
`Calendar`类的一些主要方法包括:
- `get(int field)`:返回指定日期字段的值,如`Calendar.YEAR`, `Calendar.MONTH`, `Calendar.DAY_OF_MONTH`等。
- `set(int field, int value)`:设置指定日期字段的值。
- `add(int field, int amount)`:在指定的日期字段上增加或减少一定量。
- `getTime()`:返回`Date`对象,表示当前`Calendar`的时间值。
- `getTimeInMillis()`:返回`Calendar`的日期和时间以毫秒为单位的值。
- `clear()`:将所有字段设置为默认值。
- `roll(int field, boolean up)`:在指定字段上滚动(增加或减少一天、一周等,但不会跨过边界)。
`Calendar`和`Date`之间的转换也很简单。如果你有一个`Date`对象,可以通过`Calendar.getInstance().setTime(date)`将其转换为`Calendar`对象。反之,如果有一个`Calendar`对象,可以使用`calendar.getTime()`得到一个`Date`对象。这两种类都用于处理日期和时间,但`Calendar`提供了更丰富的操作和控制能力。
此外,`Calendar`类是线程不安全的,所以在多线程环境中,每个线程应有自己的`Calendar`实例。如果需要在多个线程间共享,需要进行适当的同步控制。
如果你想自定义日历系统,例如实现农历或者特定文化的日历,你可以创建一个新的类继承自`Calendar`,并覆盖必要的方法来实现特定的日历规则。不过,这通常需要对日历系统有深入的理解,并且是一个相对复杂的任务。
`Calendar`类是Java中处理日期和时间的强大工具,它允许灵活地操作和表示各种日历系统,而`GregorianCalendar`则是我们最常使用的公历实现。通过理解和掌握`Calendar`的使用,可以方便地处理日期和时间相关的计算和格式化问题。
138 浏览量
2021-10-01 上传
2023-06-02 上传
2023-06-10 上传
2023-09-19 上传
2023-08-30 上传
2021-03-16 上传
2008-08-31 上传
2011-03-03 上传
weixin_38652147
- 粉丝: 5
- 资源: 954
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析