`
haiyangyiba
  • 浏览: 14424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

 题外话:如果某一年的第一天,也就是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

分享到:
评论
3 楼 抛出异常的爱 2013-05-29  
Oracle

引用

W 返回指定日期在当月中的第X周(范围:1-5)
select to_char(to_date(¨2007-6-18¨,¨yyyy-mm-dd¨),¨w¨) from dual;
3

WW 返回指定日期在当年中的第X周(范围:1-53)
select to_char(to_date(¨2007-6-18¨,¨yyyy-mm-dd¨),¨ww¨) from dual;
25


IW 指定日期在当年中第X周(范围:1-52或1-53(润年))
select to_char(sysdate,¨IW¨) from dual;
50
2 楼 haiyangyiba 2013-05-22  
public static void main(String[] args) {

		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_WEEK, 2);//将当前日期设置为本周的第二天,周日为第一天,周一为第二天
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("=========" + dateFormat.format(calendar.getTime()));
	}

获取当前日期所在的周的,每个周一的日期
获取每个周的周日的日期,将2修改为1即可
1 楼 抛出异常的爱 2010-05-04  
为什么不传DATE进SQL中去
你的用法不太容易用的上索引
如果你在sql中把字串变DATA
两天之的又会丢23个小时。

相关推荐

    求某段时间内某一星期日期的天数

    - `@DateE`: 结束日期。 - `@WeekValue`: 表示特定星期日期的值(1表示周日,2表示周一,以此类推)。 - **初始化变量**: - `@sResult`: 用于存储结果字符串。 - `@nResult`: 用于存储计算得到的天数。 - `@...

    jq 日期控件 可选择时间,日期,星期等等

    - **时间选择**:除了日期,还可以选择具体的时间,如会议的开始和结束时间。 - **星期选择**:允许用户选择一周中的某一天,这对于安排重复事件非常有用。 2. **自定义配置**: - **样式定制**:开发者可以根据...

    PHP 获取某年第几周的开始日期和结束日期的实例

    4. 然后,函数找到这一周的结束日期(`$weekday['end']`),即从开始日期加上一个星期天的时间差。如果结束日期超出了当年的范围,即日期部分的年份不是输入的年份,则将结束日期设为该年的最后一天($year_end)。 ...

    C#获取每个年,月,周的起始日期和结束日期的方法

    - 对于周(Week),我们首先获取当前日期是星期几,然后根据这个值计算本周的起始日期(例如,如果是星期日,起始日期为上周的星期一),结束日期为本周的星期六。 - 对于日(Day),起始和结束日期都为当前日期。 ...

    java编程题黑色星期五

    本题目要求通过Java程序来找出从当前日期开始的未来五个“黑色星期五”的具体日期,并将其输出。 #### 题目要求概述 1. **确定“黑色星期五”**:如果某天是当月的13号且是星期五,则该天被称为“黑色星期五”。 2...

    SQL 判断给定日期值(或时间段)所在星期的星期一和星期天的日期

    测试`MY_Range_GetWeekFirstAndEndDays`函数,使用日期`2011-09-01`至`2011-10-06`,会返回这段时间内每个星期的开始和结束日期。 这两个函数对于处理与星期相关的报告和分析非常有用,比如周销售报告或者按周跟踪...

    Java中用Calendar类计算周和周的起始日期

    在计算某年某周的结束日期时,需要了解 getLastDayOfWeek() 方法,该方法用于获取某年某周的最后一天。该方法首先将年份和周数目设置到 Calendar 对象中,然后使用 add() 方法将日期添加到 Calendar 对象中,然后...

    用java实现的万年历

    同时,需要根据日期和星期几来决定每行的开始和结束,这需要嵌套的循环和条件判断。 4. **格式化输出**:输出日历时,可能需要将日期格式化为特定样式,例如"月/日"或"星期x,月日"。这可以使用`SimpleDateFormat`...

    计算某年从某一天起某日是第几周

    在编程领域,计算某年从某一天起某日是第几周是一个常见的日期处理问题,主要涉及日期和时间的操作。这个任务通常会在日历应用、数据分析或者报告生成等场景中出现。下面我们将深入探讨如何实现这个功能,并提供相关...

    如何计算任意一天是星期几

    - **定义**:每个月根据其天数和上一个月的结束日期,拥有自己的偏移量。例如,一月的偏移量为0,二月的偏移量则为一月的总天数对7取模的结果(31%7=3)加上一月的偏移量。 - **计算**:按照每月的天数,计算出每...

    Excel日期和时间函数.docx

    该函数可以根据指定的开始日期和结束日期返回年、月、日之间的差值。例如,=DATEDIF(A1, B1, "Y") 将返回 A1 和 B1 之间的年数差值。 三、DATEVALUE 函数 DATEVALUE 函数用于将文本格式的日期转换为系列数。其语法...

    MSSQL判断任意时间是某月的第几周

    在SQL Server(MSSQL)中,我们有时需要根据日期来确定这个日期所在月份的周数,例如在项目管理或...注意,这个函数假设一周从星期一开始,如果需要从星期日开始,那么在处理`@dayofweek_num`时需要进行相应的调整。

    sybase日期函数全解析

    它接受三个参数:日期部分、开始日期和结束日期。例如,`datepart(year, getdate())` 将返回当前年份。 3. **datediff()** 函数: - `datediff()` 计算两个日期之间指定日期部分的差异。它有三个参数:日期部分、...

    JAVA日期操作汇总

    此方法首先确保起始日期在结束日期之前,然后计算两个日期之间的时间差,并将其转换为天数。 通过上述示例,我们可以看到Java中的日期操作非常强大且灵活,能够满足各种需求。希望这些示例能帮助您更好地理解和掌握...

    DateFormatUtils时间获取及格式化工具类

    查询距离当前系统时间的本周星期一、星期日的天数的日期 获取系统当前 n天后 开始时间 获取系统当前 n天后 结束时间 按照指定格式,格式化指定时间 获取当前日期 获取给定日期N天后的日期 获取某月开始时间 获取本月...

    利用Excel组合公式指定某月的第几周的天数.rar

    一旦有了第5周的开始和结束日期,我们就可以通过减法来计算这个周的天数: ``` = 终止日期 - 开始日期 + 1 ``` 在提供的压缩包文件"15.7 计算上月的天数.xls"中,可能包含了一个具体的例子,展示了如何应用这些公式...

    计算两个日期之间的时间差

    如果开始日期晚于结束日期,则交换两者再进行计算: ```c int Calculate(date begin, date end) { int sum = Year_To_Day(begin.year, end.year) - Month_To_Day(begin) + Month_To_Day(end); return (begin.year...

    java 使用单例模式计算某一年(默认今年)一共有多少个周,以及列出每一周和其所对应的时间段(内含注释)

    在`init()`方法中,首先定义两个`Calendar`对象来表示每年的第一天和最后一天,然后使用循环来遍历一年中的每一天,判断是否为新的一周的开始,如果是,则记录这一周的起止日期。 5. **获取当前系统时间和当前日期...

    练习十七习题学习教案.pptx

    - 儿童画展的例子展示了如何确定活动的起始日期和结束日期,并计算持续的总天数。在这个例子中,画展从星期日开始,到星期六结束,共展出7天。 - 5月5日妈妈出差回来是星期日,计算出差天数需要从出发日期开始计算...

Global site tag (gtag.js) - Google Analytics