获取周数据,每周第一天和最后一天,前几周

本文介绍了一个实用的Java工具类,用于获取指定日期所在周的第一天和最后一天,并通过示例展示了如何利用该工具类来获取过去五周的具体日期范围。

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

package com.jzlife;

import java.time.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;

import com.jzlife.report.util.DateUtil;
import com.jzlife.report.util.JsonUtil;

/**
 * @author lurz
 */
public class WeekUtil {

	public static Date getFirstDayOfWeek(Date date) {
		Calendar cal = Calendar.getInstance();
		try {
			cal.setTime(date);
			cal.set(Calendar.DAY_OF_WEEK, 2);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return cal.getTime();
	}

	public static Date getLastDayOfWeek(Date date) {
		Calendar cal = Calendar.getInstance();
		try {
			cal.setTime(date);
			cal.set(Calendar.DAY_OF_WEEK, 2);
			cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 6);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return cal.getTime();
	}

	public static void main(String[] args) {

//    	Date firstDayOfWeek = getFirstDayOfWeek(new Date());
//    	Date lastDayOfWeek = getLastDayOfWeek(new Date());
//    	
//        System.out.println(getFirstDayOfWeek(new Date()));
//        System.out.println(getLastDayOfWeek(new Date()));
//        System.out.println(DateUtil.addDay(firstDayOfWeek, -7));

//        System.out.println("当前季度为"+quarter+"季度");
//        System.out.println((c.get(c.MONTH)+1)+"--"+c.get(c.DATE));

		List<Map<String, Object>> ls=new ArrayList<Map<String,Object>>();
		Date d = new Date();
		for (int i = 0; i < 5; i++) {
			Date firstDayOfWeek = getFirstDayOfWeek(d);
			Date lastDayOfWeek = getLastDayOfWeek(d);
			String monthWeek = getMonthWeek(DateUtil.addDay(d, 1));
			d=DateUtil.addDay(d, -7);

			List<String> list = new ArrayList<String>();
			list.add(DateUtil.dateToString(firstDayOfWeek));
			list.add(DateUtil.dateToString(lastDayOfWeek));
			Map<String, Object> m=new HashMap<String, Object>();
			m.put(monthWeek, list);
			ls.add(m);
		}
		System.out.println(JsonUtil.getJson(ls));
	}

	private static String getMonthWeek(Date dd) {
		Calendar c = Calendar.getInstance();
		c.setTime(dd);
//		Calendar c = Calendar.getInstance();
//        c.add(Calendar.DATE,18); //增加一天
		int month = c.get(c.WEEK_OF_MONTH);
		int week = c.get(c.WEEK_OF_YEAR);
		String quarter = "";
		int m = c.get(c.MONTH);
		if (m >= 1 && m == 3) {
			quarter = "1";
		} else if (m >= 4 && m <= 6) {
			quarter = "2";
		} else if (m >= 7 && m <= 9) {
			quarter = "3";
		} else {
			quarter = "4";
		}
//        System.out.println("今天是今年的第" + week + "周;");
//        System.out.println((c.get(c.MONTH)+1)+"月第" + month + "周;");
		return (c.get(c.MONTH) + 1) + "月第" + month + "周;";
	}

}

[{"10月第3周;":["2022-10-10","2022-10-16"]},{"10月第2周;":["2022-10-03","2022-10-09"]},{"10月第1周;":["2022-09-26","2022-10-02"]},{"9月第4周;":["2022-09-19","2022-09-25"]},{"9月第3周;":["2022-09-12","2022-09-18"]}]
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值