日期工具类

类型对应如下: 1、本日;2、本周;3、本月;4、本季度;5、本年; 当获取本周时间时,时区使用中国时区

package com.sinochem.demo;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.TimeZone;

public class DateUtils {
    public static Map<String, String> getStartAndEndTime(int type) {
        Map<String, String> dateRange = new HashMap<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置时区为中国时区

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置时区为中国时区

        switch (type) {
            case 1: // 本日
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                dateRange.put("startTime", sdf.format(calendar.getTime()));
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
                dateRange.put("endTime", sdf.format(calendar.getTime()));
                break;
            case 2: // 本周
                if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                    calendar.add(Calendar.DAY_OF_YEAR,-1);
                }
                calendar.add(Calendar.DAY_OF_WEEK, -(calendar.get(Calendar.DAY_OF_WEEK) - 2));
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                calendar.set(Calendar.MILLISECOND, 0);
                dateRange.put("startTime", sdf.format(calendar.getTime()));
                calendar.add(Calendar.DAY_OF_WEEK, 6);
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
                calendar.set(Calendar.MILLISECOND, 999);
                dateRange.put("endTime", sdf.format(calendar.getTime()));
                break;
            case 3: // 本月
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                dateRange.put("startTime", sdf.format(calendar.getTime()));
                calendar.add(Calendar.MONTH, 1);
                calendar.add(Calendar.DAY_OF_MONTH, -1);
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
                dateRange.put("endTime", sdf.format(calendar.getTime()));
                break;
            case 4: // 本季度
                int month = calendar.get(Calendar.MONTH);
                int quarterStartMonth = 0;
                if (month >= 0 && month <= 2) {
                    quarterStartMonth = 0;
                } else if (month >= 3 && month <= 5) {
                    quarterStartMonth = 3;
                } else if (month >= 6 && month <= 8) {
                    quarterStartMonth = 6;
                } else if (month >= 9 && month <= 11) {
                    quarterStartMonth = 9;
                }
                calendar.set(Calendar.MONTH, quarterStartMonth);
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                dateRange.put("startTime", sdf.format(calendar.getTime()));
                calendar.add(Calendar.MONTH, 3);
                calendar.add(Calendar.DAY_OF_MONTH, -1);
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
                dateRange.put("endTime", sdf.format(calendar.getTime()));
                break;
            case 5: // 本年
                calendar.set(Calendar.MONTH, 0);
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                dateRange.put("startTime", sdf.format(calendar.getTime()));
                calendar.add(Calendar.YEAR, 1);
                calendar.add(Calendar.DAY_OF_MONTH, -1);
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
                dateRange.put("endTime", sdf.format(calendar.getTime()));
                break;
            default:
                throw new IllegalArgumentException("Invalid type");
        }

        return dateRange;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值