Calendar时间日期的格式化及累加操作
2014-11-09 19:58
281 查看
1.时间日期的格式
在处理显示时间时,会要求格式化时间显示格式因为默认的看着太不习惯-Sun Nov 09 20:18:38 CST 2014
经常会格式成中国人习惯的 格式 yyyy年MM月dd日 HH:mm
可以使用java.text.SimpleDateFormat日期格式化类来完成日期的格式化,首先声明一个格式:SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
然后就有了你自己的格式,现在可以格式化你的时间,sdf.format(new Date());现在输出的时间就是你的时
间格 式了,有时候可能会需要的并不是当前的时间,可能是一周前,一周后,连续的几天,这时Date就不能
满足 需求了,可以使用Calendar,就是下面的时间的累加。
2.时间的累加
Calendar中有支持日期加法的方法,首先需要获得一个实例:
Calendar cal = Calendar.getInstance();
可以使用三种方法更改日历字段:
set()、
add()和
roll()。
set(f, value)将日历字段
f更改为
value。此外,它设置了一个内部成员变量,以指示日历字段
f已经被更改。尽管日历字段
f是立即更改的,但是直到下次调用
get()、
getTime()、
getTimeInMillis()、
add()或
roll()时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调用
set()不会触发多次不必要的计算。使用
set()更改日历字段的结果是,其他日历字段也可能发生更改,这取决于日历字段、日历字段值和日历系统。此外,在重新计算日历字段之后,
get(f)没必要通过调用
set方法返回
value集合。具体细节是通过具体的日历类确定的。
示例:假定
GregorianCalendar最初被设置为 1999 年 8 月 31 日。调用
set(Calendar.MONTH, Calendar.SEPTEMBER)将该日期设置为 1999 年 9 月 31 日。如果随后调用
getTime(),那么这是解析 1999 年 10 月 1 日的一个暂时内部表示。但是,在调用
getTime()之前调用
set(Calendar.DAY_OF_MONTH, 30)会将该日期设置为 1999 年 9 月 30 日,因为在调用
set()之后没有发生重新计算。
add(f, delta)将
delta添加到
f字段中。这等同于调用
set(f, get(f) + delta),但要带以下两个调整:
Add 规则 1。调用后
f字段的值减去调用前
f字段的值等于
delta,以字段
f中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,并将字段值调整回其范围内。
Add 规则 2。如果期望某一个更小的字段是不变的,但让它等于以前的值是不可能的,因为在字段
f发生更改之后,或者在出现其他约束之后,比如时区偏移量发生更改,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。更小的字段表示一个更小的时间单元。
HOUR是一个比
DAY_OF_MONTH小的字段。对于不期望是不变字段的更小字段,无需进行任何调整。日历系统会确定期望不变的那些字段。
此外,与
set()不同,
add()强迫日历系统立即重新计算日历的毫秒数和所有字段。
示例:假定
GregorianCalendar最初被设置为 1999 年 8 月 31 日。调用
add(Calendar.MONTH, 13)将日历设置为 2000 年 9 月 30 日。Add 规则 1 将
MONTH字段设置为 September,因为向 August 添加 13 个月得出的就是下一年的 September。因为在
GregorianCalendar中,
DAY_OF_MONTH不可能是 9 月 31 日,所以 add 规则 2 将
DAY_OF_MONTH设置为 30,即最可能的值。尽管它是一个更小的字段,但不能根据规则 2 调整
DAY_OF_WEEK,因为在
GregorianCalendar中的月份发生变化时,该值也需要发生变化。
roll(f, delta)将
delta添加到
f字段中,但不更改更大的字段。这等同于调用
add(f, delta),但要带以下调整:
Roll 规则。在完成调用后,更大的字段无变化。更大的字段表示一个更大的时间单元。
DAY_OF_MONTH是一个比
HOUR大的字段
[title2][/title2]
相关文章推荐
- Java Calendar 类时间操作,代码很简单。 演示了获取时间,日期时间的累加和累减,以及比较。
- 关于c#对日期时间字符串的格式化操作
- java日期时间操作 Date和Calendar
- 【转】Js获取当前日期时间及格式化操作
- c#获取当前日期时间以及格式化操作
- Python时间与日期操作(datetime、time、calendar)
- java Calendar DateFormat 时间 日期 月份 格式化 第一天 最后一天
- Js获取当前日期时间及格式化操作
- Js获取当前日期时间及格式化操作
- Js获取当前日期时间及格式化操作
- Java Calendar 类的时间操作+获取昨天日期
- iOS:日期 时间类操作 NSDate、calendar、formatter、components、locale、timeZone
- iOS:日期 时间类操作 NSDate、calendar、formatter、components、locale、timeZone - houseq 的专栏 - 博客频道 - CSDN.NET
- 【转】Js获取当前日期时间及格式化操作
- java 日期的格式化、解析、数据库相关操作、获取系统时间、String与Date的转换
- Js获取当前日期时间及其它格式化操作
- Js获取当前日期时间及格式化操作
- Js获取当前日期时间及格式化操作
- String-date-Calendar转换,日期的加减格式化操作
- 日期/时间格式化操作