锁定老帖子 主题:求某年52(53)个星期的开始结束日期
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-04
题外话:如果某一年的第一天,也就是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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-04
最后修改:2010-05-04
为什么不传DATE进SQL中去
你的用法不太容易用的上索引 如果你在sql中把字串变DATA 两天之的又会丢23个小时。 |
|
返回顶楼 | |
浏览 2417 次