java获取当前日期 前后 几个月的 日期期间 往前 2个月 往后 2个月

本文介绍了一个Java方法,用于获取当前日期前后两个月的日期范围,并将其格式化为字符串。此外,还展示了一个MyBatis Mapper XML示例,演示如何在SQL查询中使用这些日期范围来筛选数据。

java获取当前日期 前后 几个月的 日期期间
需要原因 返回的String 格式

private Map<String,String> getDuringDate(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        String returnEndDate = simpleDateFormat.format(date);
        Date parse = null;
        try {
            parse = simpleDateFormat.parse(returnEndDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar calendar = Calendar.getInstance(); //得到日历
        Map<String,String> returnMap = new HashMap<>();
        //把当前时间赋给日历
        if (parse!=null){
            calendar.setTime(parse);
            //设置为前2月 三个月 -3
            calendar.add(calendar.MONTH, -2);
            //获取2个月前的时间
            Date startDate = calendar.getTime();
            String returnStartDate = simpleDateFormat.format(startDate);
            returnMap.put("startDate",returnStartDate);
            returnMap.put("endDate",returnEndDate);
        }

Mapper.xml

<select id="getCompleteOrderShopId" resultMap="java.util.List">
        SELECT
            a.shop_id
        FROM
            xquark_user a
                INNER JOIN xquark_order b ON a.id = b.buyer_id
                INNER JOIN xquark_order_item c ON b.id = c.order_id
        WHERE
            a.archive = FALSE
          AND b.archive = FALSE
          AND c.archive = FALSE
          AND b.STATUS = 'SUCCESS'
          AND c.amount > 5
          AND Date( succeed_at ) BETWEEN #{startDate} AND #{endDate}
          AND a.shop_id in
        <foreach item="item" collection="shopIdList" separator="," open="(" close=")" index="">
            #{item, typeHandler=idHandler}
        </foreach>
        GROUP BY
            a.shop_id
    </select>
### 使用 `java.util.Date` 和 `Calendar` 计算一个日期Java 中,`java.util.Date` 本身并不直接提供日期运算的功能。因此,若需要计算当前日期的一个日期,通常需要借助 `java.util.Calendar` 类来完成此操作[^1]。 以下是实现该功能的代码示例: ```java import java.util.Calendar; import java.util.Date; public class DateOneMonthAgoExample { public static void main(String[] args) { // 获取当前日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); // 将减去1 calendar.add(Calendar.MONTH, -1); // 获取一个日期 Date oneMonthAgo = calendar.getTime(); // 打印结果 System.out.println("当前日期: " + new Date()); System.out.println("一个日期: " + oneMonthAgo); } } ``` #### 代码解析 - `Calendar.getInstance()` 方法用于获取当前时间的 `Calendar` 实例。 - `calendar.setTime(new Date())` 将 `Calendar` 对象设置为当前日期和时间。 - `calendar.add(Calendar.MONTH, -1)` 方法用于将减少一个。这里 `-1` 表示向移动一个。 - `calendar.getTime()` 返回更新后的日期对象,表示一个日期。 需要注意的是,`java.util.Date` 的设计较为陈旧,且缺乏对日期运算的直接支持。因此,在实际开发中,推荐使用 `java.time` 包(自 Java 8 引入)中的类,例如 `LocalDate` 或 `ZonedDateTime` 来进行日期运算[^3]。 #### 示例输出 假设当前日期为 `2023-10-15`,运行上述代码后输出可能如下: ``` 当前日期: Sun Oct 15 14:30:00 CST 2023 一个日期: Fri Sep 15 14:30:00 CST 2023 ``` ### 注意事项 如果需要处理更复杂的日期逻辑(如跨年、闰年等),`Calendar` 类可以自动调整相关字段[^3]。但为了提高代码可读性和避免潜在问题,建议优先考虑 `java.time` 包中的现代 API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值