题外话:如果某一年的第一天,也就是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
分享到:
相关推荐
- `@DateE`: 结束日期。 - `@WeekValue`: 表示特定星期日期的值(1表示周日,2表示周一,以此类推)。 - **初始化变量**: - `@sResult`: 用于存储结果字符串。 - `@nResult`: 用于存储计算得到的天数。 - `@...
- **时间选择**:除了日期,还可以选择具体的时间,如会议的开始和结束时间。 - **星期选择**:允许用户选择一周中的某一天,这对于安排重复事件非常有用。 2. **自定义配置**: - **样式定制**:开发者可以根据...
4. 然后,函数找到这一周的结束日期(`$weekday['end']`),即从开始日期加上一个星期天的时间差。如果结束日期超出了当年的范围,即日期部分的年份不是输入的年份,则将结束日期设为该年的最后一天($year_end)。 ...
- 对于周(Week),我们首先获取当前日期是星期几,然后根据这个值计算本周的起始日期(例如,如果是星期日,起始日期为上周的星期一),结束日期为本周的星期六。 - 对于日(Day),起始和结束日期都为当前日期。 ...
本题目要求通过Java程序来找出从当前日期开始的未来五个“黑色星期五”的具体日期,并将其输出。 #### 题目要求概述 1. **确定“黑色星期五”**:如果某天是当月的13号且是星期五,则该天被称为“黑色星期五”。 2...
测试`MY_Range_GetWeekFirstAndEndDays`函数,使用日期`2011-09-01`至`2011-10-06`,会返回这段时间内每个星期的开始和结束日期。 这两个函数对于处理与星期相关的报告和分析非常有用,比如周销售报告或者按周跟踪...
在计算某年某周的结束日期时,需要了解 getLastDayOfWeek() 方法,该方法用于获取某年某周的最后一天。该方法首先将年份和周数目设置到 Calendar 对象中,然后使用 add() 方法将日期添加到 Calendar 对象中,然后...
同时,需要根据日期和星期几来决定每行的开始和结束,这需要嵌套的循环和条件判断。 4. **格式化输出**:输出日历时,可能需要将日期格式化为特定样式,例如"月/日"或"星期x,月日"。这可以使用`SimpleDateFormat`...
在编程领域,计算某年从某一天起某日是第几周是一个常见的日期处理问题,主要涉及日期和时间的操作。这个任务通常会在日历应用、数据分析或者报告生成等场景中出现。下面我们将深入探讨如何实现这个功能,并提供相关...
- **定义**:每个月根据其天数和上一个月的结束日期,拥有自己的偏移量。例如,一月的偏移量为0,二月的偏移量则为一月的总天数对7取模的结果(31%7=3)加上一月的偏移量。 - **计算**:按照每月的天数,计算出每...
该函数可以根据指定的开始日期和结束日期返回年、月、日之间的差值。例如,=DATEDIF(A1, B1, "Y") 将返回 A1 和 B1 之间的年数差值。 三、DATEVALUE 函数 DATEVALUE 函数用于将文本格式的日期转换为系列数。其语法...
在SQL Server(MSSQL)中,我们有时需要根据日期来确定这个日期所在月份的周数,例如在项目管理或...注意,这个函数假设一周从星期一开始,如果需要从星期日开始,那么在处理`@dayofweek_num`时需要进行相应的调整。
它接受三个参数:日期部分、开始日期和结束日期。例如,`datepart(year, getdate())` 将返回当前年份。 3. **datediff()** 函数: - `datediff()` 计算两个日期之间指定日期部分的差异。它有三个参数:日期部分、...
此方法首先确保起始日期在结束日期之前,然后计算两个日期之间的时间差,并将其转换为天数。 通过上述示例,我们可以看到Java中的日期操作非常强大且灵活,能够满足各种需求。希望这些示例能帮助您更好地理解和掌握...
查询距离当前系统时间的本周星期一、星期日的天数的日期 获取系统当前 n天后 开始时间 获取系统当前 n天后 结束时间 按照指定格式,格式化指定时间 获取当前日期 获取给定日期N天后的日期 获取某月开始时间 获取本月...
一旦有了第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...
在`init()`方法中,首先定义两个`Calendar`对象来表示每年的第一天和最后一天,然后使用循环来遍历一年中的每一天,判断是否为新的一周的开始,如果是,则记录这一周的起止日期。 5. **获取当前系统时间和当前日期...
- 儿童画展的例子展示了如何确定活动的起始日期和结束日期,并计算持续的总天数。在这个例子中,画展从星期日开始,到星期六结束,共展出7天。 - 5月5日妈妈出差回来是星期日,计算出差天数需要从出发日期开始计算...