求某年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

基于STM32L4XX、HAL库的TESEO-LIV4FTR定位模块驱动程序设计 支持多星座系统:GPS、GLONASS、Galileo和北斗。支持NMEA 0183协议和ST专有协议。高灵敏度:-167dBm跟踪灵敏度。低功耗设计,适合物联网和便携设备。内置LNA和SAW滤波器。 阅读详情

相关推荐

YOLOv8与UNetV2融合:一种面向目标检测与图像分割的混合方法【附核心代码】

我们提出了一种基于YOLOv8和UNetV2相结合的混合架构。该架构利用YOLOv8作为主干进行目标检测,同时在YOLOv8的特征提取过程中,引入UNetV2来进行图像分割任务的增强。在该架构中,YOLOv8负责大范围目标检测和位置预测,而UNetV2则在检测网络的特征图基础上,通过其高效的上下文信息提取和细节恢复能力,进一步优化分割任务。在本文中,我们提出了一种改进YOLOv8的方法,通过引入图像分割网络UNetV2来提高图像分割检测性能。

一键难忘的博客 3470

获取指定指定时间是今年的第几个星期(日期可调)

//此为获取时间戳指定时间是一年的第几 Calender public class DateUtils { public static Integer getWeekOfYear(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); int week.

m0_54942715的博客 417

2019年日历表(和节假日 A4大小)

表格:2019年日历表统计---53、18传统节日、24气节、农历和节假日安排---A4纸大小,可打印

输入1-53,输出1-53开始时间和结束时间

create procedure getweekrange(num int) begin select x.start,adddate(x.start,6) as end from ( select adddate(first,(num-week(first,5))*7-weekday(first)) as start from (select makedate(year(now()...

weixin_30566063的博客 224

SimpleDateFormat 取当前一和日的日期,当前月第一个和最后一天的日期...

/** * 类说明 :以及获取当前一和日的日期,当前月第一个和最后一天的日期 * 日期格式化:格式参  G 年代标志符  y 年 M 月 d 日    h 时 在上午或下午 (1~12)   H 时 在一天中 (0~23)   m 分   s 秒    S 毫秒  E 星期 D 一年中的第几天        F 一月中第几个星期几 w 一年中第几个星期 W...

bobo的博客 444

SimpleDateFormat转换的时间比真实时间多8小时

使用SimpleDateFormat时,时间多出8小时,网上资料说是和时区有关,具体的大家可自行百度下。下面直接所解决办法: long dt = 8000; SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss"); sd.setTimeZone(TimeZone.getTimeZone("GMT+0"));//**T

AndroidOliver的博客 1万+

某年中某开始结束日期以及某月的开始结束

最近项目有个需,获取某年中某一开始结束日期某年中某一个月的开始结束日期。 1、获取某年中某一日期;一般来说,一年最多有53,平年365天,即52余一天,闰年366天,即52余二天。(注意:这里的星期开始一,不是日) private static final ThreadLocal<SimpleDateFormat> THREAD_SDF = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-M

For-的博客 599

计算一年有多少个,每个开始日期结束日期是什么

计算一年有多少个,每个开始日期结束日期是什么

qq_43685588的博客 2550

java8获取某年中每一日期

朋友的一个小需 获取指定年份中每一日期范围 直接上代码 package com.dbappsecurity.nssa.notice; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.WeekFields; import java.util.ArrayList; import java.util.Ha

strophe的博客 2128

iOS 获取某年有几,获取某年日期范围

//NSString转NSDate +(NSDate *)dateFromString:(NSString *)dateString DateFormat:(NSString *)DateFormat{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFo...

杨克进的博客 1685

Oracle日期详解以及开始结束时间计算

Oracle日期详解以及开始结束时间计算 日期格式化函 TO_CHAR(X [,FORMAT]):将X按FORMAT格式转换成字符串。X是一个日期,FORMAT是一个规定了X采用何种格式转换的格式字符串,FORMAT与相关的有W,WW,IW,D,FMWW。 W的含义是一个月的第几。是按照ORACLE自定义的标准来返回。 IW是ISO标准,它的含义是ISO标准别为“主线”,每年最多可以有53别,但是每年至少要包含52别;如果一年当中第52别之后至当年的12月..

学长的猫的博客 3190

oracle时间开始结束时间,Oracle日期详解以及开始结束时间计算

1 Oracle中相关知识描述 1.1 日期格式化函 TO_CHAR(X [,FORMAT]):将X按FORMAT格式转换成字符串。X是一个日期,FOR1 Oracle中相关知识描述1.1 日期格式化函TO_CHAR(X [,FORMAT]):将X按FORMAT格式转换成字符串。X是一个日期,FORMAT是一个规定了X采用何种格式转换的格式字符串,FORMAT与相关的有...

weixin_39707693的博客 1179

js根据一年中的(一年中的第几),来获取日期范围(根据一年的第N,来获取第N日期范围)

Date.prototype.Format = function(fmt){ //需要JS格式化时间,后期做的时候方便使用 var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : t...

qq_37899792的博客 6578

计算一年有多少个 每个开始日期结束日期是什么

计算一年有多少个 每个开始日期结束日期是什么

hfrujhv的博客 1万+

java获取某年度有多少_java获取一年共有多少

满意答案owetj推荐于 2016.08.21采纳率:55%等级:9已帮助:863人计算一年有多少个的思路:首先,每年至少有52,至多有53,取决于一是在哪年(也可以定位日,这个是由需决定的),以下是详细代码,其中判断哪一天决定了当是属于哪一年的逻辑是写在getYearWeekEndDay中。/*** 返回指定年度的所有。List中包含的是String[2]对象* st...

weixin_29479087的博客 2178

已经年,第x,计算这开始日期结束日期

2、 已知年,第x,获取这一日与日期(一起始时间为日) /** * 计算某年开始日期 * @param yearNum * 格式 yyyy ,必须大于1900年度 小于9999年 * @param weekNum * 1到52或者53 * @return 日期,格式为yyyy-MM-dd ...

远去的渡口 269

基于stm32的睡眠质量&环境检测仪(可做为热成像仪使用

基于stm32的睡眠质量&环境检测仪(可做为热成像仪使用

上一篇: 求某年12个月的开始结束日期
下一篇: 对 json 的一点点浅浅的认识
javacdd
博客等级 码龄18年 0粉丝 2原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值