Java 中日期加减运算,Java小时加减运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
GregorianCalendar gc=new GregorianCalendar();
try {
gc.setTime(date);
gc.add(7, -Integer.parseInt("3"));
/*
* add(int field, int amount)
* amount 是加减的数值;
* field=1,对年加减;
* field=2 ,对月份加减;
* field=5、6、7 ,对日期加减;
* field=10、11 ,对小时加减;
* field=12 ,对分钟加减;
*/
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(sdf.format(gc.getTime()));

public void add(int field, int amount)

根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。

_添加规则 1_。调用之后的 field 字段的值减去调用之前的 field 字段的值等于 amount,以 field 中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,字段值被调整回其范围内。

_添加规则 2_。如果期望某一个更小的字段是无变化的,但让它等于以前的值是不可能的,因为在字段 field 发生更改之后,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。更小的字段表示一个更小的时间单元。HOUR 是一个比 DAY_OF_MONTH 更小的字段。对于不期望是无变化字段的更小字段,无需进行任何调整。日历系统确定期望是无变化字段的那些字段。

指定者:Calendar 中的 add

参数:field - 日历字段。amount - 为字段添加的日期或时间量。
附: SimpleDateFormat ( 日期和时间模式 )

字母 日期或时间元素 表示 示例
`G` Era 标志符 [Text](#text) `AD`
`y` [Year](#year) `1996`; `96`
`M` 年中的月份 [Month](#month) `July`; `Jul`; `07`
`w` 年中的周数 [Number](#number) `27`
`W` 月份中的周数 [Number](#number) `2`
`D` 年中的天数 [Number](#number) `189`
`d` 月份中的天数 [Number](#number) `10`
`F` 月份中的星期 [Number](#number) `2`
`E` 星期中的天数 [Text](#text) `Tuesday`; `Tue`
`a` Am/pm 标记 [Text](#text) `PM`
`H` 一天中的小时数(0-23) [Number](#number) `0`
`k` 一天中的小时数(1-24) [Number](#number) `24`
`K` am/pm 中的小时数(0-11) [Number](#number) `0`
`h` am/pm 中的小时数(1-12) [Number](#number) `12`
`m` 小时中的分钟数 [Number](#number) `30`
`s` 分钟中的秒数 [Number](#number) `55`
`S` 毫秒数 [Number](#number) `978`
`z` 时区 [General time zone](#timezone) `Pacific Standard Time`; `PST`; `GMT-08:00`
`Z` 时区 [RFC 822 time zone](#rfc822timezone) `-0800`