Java 获取当前日期前一天的日期(指定格式字符串)

1. 方法1: 如果是 java8, 可以使用 LocalDate 获取

        // 获取当前日期前一天的日期
        LocalDate localDate = LocalDate.now().minusDays(1);
        // 获取时间字符串如: 2021-03-01
        System.out.println(localDate.toString());
        // 获取当前年如 2021
        System.out.println(localDate.getYear());
        // 获取当前月如 3
        System.out.println(localDate.getMonthValue());
        // 获取当前天如 1
        System.out.println(localDate.getDayOfMonth());

LocalDate转化为指定格式的字符串

方法1

LocalDate localDate = LocalDate.parse("2019-05-08");
String date = localDate.format(DateTimeFormatter.ofPattern("MMM dd, yyyy"));
System.out.println(date); //May 08, 2019 

方法2

LocalDate localDate = LocalDate.parse("2019-05-08");
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM dd, yyyy");
String date = dtf.format(localDate);
System.out.println(date); //May 08, 2019 

2. 方法2: 使用 Calendar 类

        //获取当前日期
        Date date = new Date();
        //将时间格式化成yyyy-MM-dd HH:mm:ss的格式
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //创建Calendar实例
        Calendar cal = Calendar.getInstance();
        //设置当前时间
        cal.setTime(date);
        //在当前时间基础上减一年
        cal.add(Calendar.YEAR, -1);  
        System.out.println(format.format(cal.getTime()));
        //在当前时间基础上减一月
        cal.add(Calendar.MONTH,-1);
        System.out.println(format.format(cal.getTime()));
        //同理增加一天的方法:
        cal.add(Calendar.DATE, 1);
        System.out.println(format.format(cal.getTime()));

参考:

Java在当前日期基础上加一年、一个月或一天

  • 20
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要获取指定日期前一天的开始日期和结束日期,可以使用Java中的日期和时间类——LocalDate。 首先,需要将字符串类型的日期转换成LocalDate类型。可以使用LocalDate类中的静态方法parse(),传入日期字符串和对应的日期格式,生成对应的LocalDate对象。比如: ```java String dateStr = "2022-02-25"; // 指定日期 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 日期格式 LocalDate date = LocalDate.parse(dateStr, formatter); // 转换成LocalDate对象 ``` 得到LocalDate对象后,可以使用minusDays()方法获取前一天日期。比如: ```java LocalDate yesterday = date.minusDays(1); ``` 接着,需要获取前一天的开始日期和结束日期。可以使用with()方法改变当前日期的年月日,生成新的LocalDate对象。 获取前一天的开始日期:将小时、分钟、秒、毫秒都设为0,即是当天的0时0分0秒。 ```java LocalDate yesterdayStart = yesterday.withHour(0).withMinute(0).withSecond(0).withNano(0); ``` 获取前一天的结束日期:将小时、分钟、秒设为23:59:59,将毫秒设为999999999,即是当天的23时59分59秒999毫秒。 ```java LocalDate yesterdayEnd = yesterday.withHour(23).withMinute(59).withSecond(59).withNano(999_999_999); ``` 最终代码如下: ```java String dateStr = "2022-02-25"; // 指定日期 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 日期格式 LocalDate date = LocalDate.parse(dateStr, formatter); // 转换成LocalDate对象 LocalDate yesterday = date.minusDays(1); // 前一天日期 LocalDate yesterdayStart = yesterday.withHour(0).withMinute(0).withSecond(0).withNano(0); // 前一天开始时间 LocalDate yesterdayEnd = yesterday.withHour(23).withMinute(59).withSecond(59).withNano(999_999_999); // 前一天结束时间 ``` ### 回答2: Java获取指定日期前一天的开始日期和结束日期可以通过以下步骤实现: 1. 使用SimpleDateFormat类将指定日期字符串转换为Date类型: ``` SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse("2021-08-26"); ``` 2. 使用Calendar类将日期减去一天: ``` Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, -1); Date yesterday = calendar.getTime(); ``` 3. 使用SimpleDateFormat类将新的日期转换为字符串: ``` String yesterdayStr = sdf.format(yesterday); ``` 4. 计算前一天的开始日期和结束日期: ``` String yesterdayStart = yesterdayStr + " 00:00:00"; String yesterdayEnd = yesterdayStr + " 23:59:59"; ``` 完整代码如下: ``` import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class YesterdayDate { public static void main(String[] args) throws Exception { //指定日期字符串 String dateStr = "2021-08-26"; //创建 SimpleDateFormat 对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //将指定日期字符串转为 Date 类型 Date date = sdf.parse(dateStr); //创建 Calendar 对象 Calendar calendar = Calendar.getInstance(); //将日期设置到 Calendar 对象中 calendar.setTime(date); //将日期减一天 calendar.add(Calendar.DATE, -1); //获取前一天日期 Date yesterday = calendar.getTime(); //将日期转为字符串 String yesterdayStr = sdf.format(yesterday); //计算前一天的开始和结束时间 String yesterdayStart = yesterdayStr + " 00:00:00"; String yesterdayEnd = yesterdayStr + " 23:59:59"; System.out.println("前一天的开始时间:" + yesterdayStart); System.out.println("前一天的结束时间:" + yesterdayEnd); } } ``` 输出结果为: ``` 前一天的开始时间:2021-08-25 00:00:00 前一天的结束时间:2021-08-25 23:59:59 ``` 这样就可以通过Java获取指定日期前一天的开始日期和结束日期。 ### 回答3: Java获取指定日期前一天的开始日期和结束日期可以使用Java提供的日期时间类库来实现。具体的实现步骤如下: 1. 定义一个日期时间格式化对象,用于将字符串类型的日期转换成日期对象。 ```java DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); ``` 2. 使用日期时间格式化对象将字符串日期转换成日期对象。 ```java Date date = dateFormat.parse("2022-01-01"); ``` 3. 使用Java提供的Calendar类,可以通过add方法将日期往前推一天,并获取前一天的开始日期和结束日期。 ```java Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, -1); //前一天的开始日期 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date startDate = calendar.getTime(); //前一天的结束日期 calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); Date endDate = calendar.getTime(); ``` 从上述代码中可以看出,获取前一天的开始日期需要将Calendar的小时、分钟和秒都设置为0,获取前一天的结束日期需要将Calendar的小时设置为23,分钟和秒都设置为59。 通过上述步骤,即可获取指定日期前一天的开始日期和结束日期。在Java中,日期时间的处理可以说是非常方便的,同时也是项目开发中经常用到的知识点之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值