Java 日期计算

在Java中使用方法GregorianCalendar()进行日期操作

String strDate = new String();
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar gc= new GregorianCalendar();
gc.setTime(date);

//使用参数radio控制你要使用哪个计算
switch(radio){
//一周前
case 1:
    gc.add(3, -1);
    gc.set(gc.get(gc.YEAR), gc.get(gc.MONTH), gc.get(gc.DATE));
    strDate = df.format(gc.getTime());
    break;
//一月前
case 2:
    gc.add(2, -1);
    gc.set(gc.get(gc.YEAR), gc.get(gc.MONTH), gc.get(gc.DATE));
    strDate = df.format(gc.getTime());
    break;
//三月前
case 3:
    gc.add(2, -3);
    gc.set(gc.get(gc.YEAR), gc.get(gc.MONTH), gc.get(gc.DATE));
    strDate = df.format(gc.getTime());  
    break;
//一年前
case 4:
    gc.add(1, -1);
    gc.set(gc.get(gc.YEAR), gc.get(gc.MONTH), gc.get(gc.DATE));
    strDate = df.format(gc.getTime());
    break;
//自定义
case 5:
    ...
    break;
default:
    ...
}

GregorianCalendar.add(int field, int amount) 参数说明如下:
public void add(int field,int amount)根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。
添加规则 1。调用之后的 field 字段的值减去调用之前的 field 字段的值等于 amount,以 field 中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,字段值被调整回其范围内。

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


指定者:
类 Calendar 中的 add
参数:
field - 日历字段。
amount - 为字段添加的日期或时间量。
抛出:
IllegalArgumentException - 如果 field 为 ZONE_OFFSET、DST_OFFSET,或未知,或者任何日历字段在 non-lenient 模式下具有超出范围的值。
另请参见:
Calendar.roll(int,int), Calendar.set(int,int)

你可能感兴趣的:(java)