使用Calendar加一天,减一天

本文提供了一个使用Java进行日期操作的简单示例,包括获取今天的日期、计算昨天、明天及后天的具体日期,并以标准格式输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Test {
    public static void main(String[] args) {
        Calendar c=Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        //今天
        String today=df.format(c.getTime());
        System.out.println(today);//比如今天是2017-02-08,则将输出2017-02-08
        
        //今天-1天(昨天)
        c.add(Calendar.DAY_OF_MONTH, -1);
        //将昨天格式化
        String yesterday=df.format(c.getTime());
        System.out.println(yesterday);//将输出2017-02-07
        
        //昨天+2天(明天)
        c.add(Calendar.DAY_OF_MONTH, 2);
        //将明天格式化
        String tomorrow=df.format(c.getTime());
        System.out.println(tomorrow);//将输出2017-02-09
        
        
        //明天+1天(后天)
        c.add(Calendar.DAY_OF_MONTH,1);
        //将后天格式化
          String nextTomorrow=df.format(c.getTime());
          System.out.println(nextTomorrow);//将输出2017-02-10
    }

}

转载于:https://www.cnblogs.com/chunyansong/p/6377064.html

<think>好的,用户想知道如何在Java使用Calendar类来设置或计算前一天的日期,并请求示例。首先,我需要回顾一下JavaCalendar类的基本用法,尤其是日期操作的部分。 首先,Calendar类是Java中处理日期和时间的抽象类,通常通过其子类如GregorianCalendar来实例化。记得要导入java.util.Calendarjava.util.GregorianCalendar。用户可能需要创建一个Calendar实例,然后调整日期字段。 接下来,设置前一天的日期,通常有两种方法:一种是使用add方法,传入Calendar.DATE和-1作为参数,这样会将日期一天。另一种方法是直接设置日期字段,比如使用set方法,但这可能需要先获取当前日期再一,不过使用add方法更直接。 然后,考虑到Calendar的月份是从0开始的,比如0代表一月,这点在显示或处理月份时需要特别注意。例如,如果当前是1月1日,一天后会变成12月31日,但月份值会是11,所以在输出时需要1。 另外,用户可能需要将Calendar实例转换为Date对象或者格式化输出,所以可能会用到SimpleDateFormat类。这部分需要给出示例代码,展示如何将结果格式化为易读的字符串。 还需要注意线程安全问题。Calendar实例并不是线程安全的,如果在多线程环境中使用,需要采取同步措施或者使用ThreadLocal。不过这可能超出了当前问题的范围,但可以作为相关提示。 然后,检查是否有常见的错误点,比如忘记调用getInstance()方法而直接实例化GregorianCalendar,或者错误的字段常量使用,比如用Calendar.DAY_OF_MONTH代替Calendar.DATE。不过实际上,这两个字段在add方法中效果是一样的。 此外,Java 8之后的日期时间API(如LocalDate)更推荐使用,但用户可能还在使用旧版代码,所以需要同时提到新旧方法,并建议升级的可能性。 最后,整理示例代码,分步骤展示创建实例、调整日期、格式化输出的过程,并确保代码语法正确。同时,生成相关问题,帮助用户深入理解,比如处理其他日期操作、线程安全、与Date的转换等。</think>### 如何用Java Calendar类设置或计算前一天的日期? #### 步骤说明 1. **创建Calendar实例** 使用`Calendar.getInstance()`或显式创建`GregorianCalendar`对象: ```java Calendar calendar = Calendar.getInstance(); // 默认当前时间 // 或 Calendar calendar = new GregorianCalendar(); // 同上 ``` 2. **调整日期为前一天** 通过`add()`方法增天数,参数为负数表示向前计算: ```java calendar.add(Calendar.DATE, -1); // 将日期1天 ``` 3. **格式化输出结果**(可选) 使用`SimpleDateFormat`将结果转为易读字符串: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String previousDay = sdf.format(calendar.getTime()); ``` #### 完整示例 ```java import java.util.Calendar; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; public class PreviousDayExample { public static void main(String[] args) { // 创建Calendar实例(当前时间) Calendar calendar = new GregorianCalendar(); // 将日期1天 calendar.add(Calendar.DATE, -1); // 格式化输出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); System.out.println("前一天的日期: " + sdf.format(calendar.getTime())); } } ``` #### 关键说明 - **月份处理**:Calendar的月份从0开始(0=一月,11=十二月),但格式化类会自动处理偏移[^1] - **线程安全**:Calendar实例非线程安全,多线程环境需同步或改用`ThreadLocal` - **替代方案**:Java 8+推荐使用`LocalDate`: ```java LocalDate yesterday = LocalDate.now().minusDays(1); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值