欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求某年52(53)个星期的开始结束日期 BeanSQL

程序员文章站 2024-03-15 23:53:00
...

 题外话:如果某一年的第一天,也就是1月1日元旦这天是星期日的话,那么这一年的星期总数绝对为53周。你可以数一数哦。

有些时侯,我们需要统计某个时间段的用户操作XX或登录次数的一个统计,不按天为单位,加入统计一年内的某个用户每个星期登录的次数,那么我们就需要这一年(52、53)星期的开始时间和结束时间,sql语句来where date between '开始时间' and '结束时间'

 

详细源码如下:

/**
 * 存储每周开始和结束日期的javabean
 */
public class TimeBean{
	
	private String startDate = "";//开始时间
	
	private String endDate = "";//结束时间

	public String getEndDate() {
		return endDate;
	}

	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}

	public String getStartDate() {
		return startDate;
	}

	public void setStartDate(String startDate) {
		this.startDate = startDate;
	}
}

 

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class Time {

	protected Calendar date = null;

	protected SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

	Map<Integer, TimeBean> map = new LinkedHashMap<Integer, TimeBean>();

	public Map<Integer, TimeBean> getMap() {
		return map;
	}

	public void setMap(Map<Integer, TimeBean> map) {
		this.map = map;
	}

	public Time(int year) {
		date = Calendar.getInstance();
		date.set(Calendar.YEAR, year);
		//给日历字段设置这段时间可能的最大值
		int maxweek = date.getActualMaximum(Calendar.WEEK_OF_YEAR);
		 System.out.println("本年中最多的星期数为:" + maxweek );
		date.set(Calendar.WEEK_OF_YEAR, maxweek);// 设置当前日期为此年的第一周
		for (int i = 1; i <= maxweek; i++) {
			TimeBean bean = new TimeBean();
			date.set(Calendar.DAY_OF_WEEK, 1);// 设置当前日期为每周的第一天,即周日
			date.set(Calendar.WEEK_OF_YEAR, i);
			String startTime = dateFormat.format(date.getTime());
			bean.setStartDate(startTime);
			date.set(Calendar.DAY_OF_WEEK, 7);// 设置当前日期为每周的第一天,即周日
			bean.setEndDate(dateFormat.format(date.getTime()));

			map.put(i, bean);
		}
	}

	public static void main(String[] args) {

		Time time = new Time(2008);
		Map<Integer, TimeBean> mp = time.getMap();
		Set set = mp.entrySet();
		for (Iterator iter = set.iterator(); iter.hasNext();) {
			Entry entry = (Entry) iter.next();
			TimeBean bean = (TimeBean) entry.getValue();
			System.out.println("星期:" + entry.getKey() + ",开始时间为:"
					+ bean.getStartDate() + ",结束时间为:" + bean.getEndDate());
		}
		
	}

}

 

说明:本例是以2008年为例:打印处的结果为:

本年中最多的星期数为:52
星期:1,开始时间为:2007-12-30,结束时间为:2008-01-05
星期:2,开始时间为:2008-01-06,结束时间为:2008-01-12
星期:3,开始时间为:2008-01-13,结束时间为:2008-01-19
星期:4,开始时间为:2008-01-20,结束时间为:2008-01-26
星期:5,开始时间为:2008-01-27,结束时间为:2008-02-02
星期:6,开始时间为:2008-02-03,结束时间为:2008-02-09
星期:7,开始时间为:2008-02-10,结束时间为:2008-02-16
星期:8,开始时间为:2008-02-17,结束时间为:2008-02-23
星期:9,开始时间为:2008-02-24,结束时间为:2008-03-01
星期:10,开始时间为:2008-03-02,结束时间为:2008-03-08
星期:11,开始时间为:2008-03-09,结束时间为:2008-03-15
星期:12,开始时间为:2008-03-16,结束时间为:2008-03-22
星期:13,开始时间为:2008-03-23,结束时间为:2008-03-29
星期:14,开始时间为:2008-03-30,结束时间为:2008-04-05
星期:15,开始时间为:2008-04-06,结束时间为:2008-04-12
星期:16,开始时间为:2008-04-13,结束时间为:2008-04-19
星期:17,开始时间为:2008-04-20,结束时间为:2008-04-26
星期:18,开始时间为:2008-04-27,结束时间为:2008-05-03
星期:19,开始时间为:2008-05-04,结束时间为:2008-05-10
星期:20,开始时间为:2008-05-11,结束时间为:2008-05-17
星期:21,开始时间为:2008-05-18,结束时间为:2008-05-24
星期:22,开始时间为:2008-05-25,结束时间为:2008-05-31
星期:23,开始时间为:2008-06-01,结束时间为:2008-06-07
星期:24,开始时间为:2008-06-08,结束时间为:2008-06-14
星期:25,开始时间为:2008-06-15,结束时间为:2008-06-21
星期:26,开始时间为:2008-06-22,结束时间为:2008-06-28
星期:27,开始时间为:2008-06-29,结束时间为:2008-07-05
星期:28,开始时间为:2008-07-06,结束时间为:2008-07-12
星期:29,开始时间为:2008-07-13,结束时间为:2008-07-19
星期:30,开始时间为:2008-07-20,结束时间为:2008-07-26
星期:31,开始时间为:2008-07-27,结束时间为:2008-08-02
星期:32,开始时间为:2008-08-03,结束时间为:2008-08-09
星期:33,开始时间为:2008-08-10,结束时间为:2008-08-16
星期:34,开始时间为:2008-08-17,结束时间为:2008-08-23
星期:35,开始时间为:2008-08-24,结束时间为:2008-08-30
星期:36,开始时间为:2008-08-31,结束时间为:2008-09-06
星期:37,开始时间为:2008-09-07,结束时间为:2008-09-13
星期:38,开始时间为:2008-09-14,结束时间为:2008-09-20
星期:39,开始时间为:2008-09-21,结束时间为:2008-09-27
星期:40,开始时间为:2008-09-28,结束时间为:2008-10-04
星期:41,开始时间为:2008-10-05,结束时间为:2008-10-11
星期:42,开始时间为:2008-10-12,结束时间为:2008-10-18
星期:43,开始时间为:2008-10-19,结束时间为:2008-10-25
星期:44,开始时间为:2008-10-26,结束时间为:2008-11-01
星期:45,开始时间为:2008-11-02,结束时间为:2008-11-08
星期:46,开始时间为:2008-11-09,结束时间为:2008-11-15
星期:47,开始时间为:2008-11-16,结束时间为:2008-11-22
星期:48,开始时间为:2008-11-23,结束时间为:2008-11-29
星期:49,开始时间为:2008-11-30,结束时间为:2008-12-06
星期:50,开始时间为:2008-12-07,结束时间为:2008-12-13
星期:51,开始时间为:2008-12-14,结束时间为:2008-12-20
星期:52,开始时间为:2008-12-21,结束时间为:2008-12-27

相关标签: Bean SQL