int week = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);//5
解决方案 »
- iframe框架嵌套
- IntelliJ IDEA rebulid项目时会删除webroot下的部分文件怎么处理
- 问一下论坛和问答是怎么做的
- 将数据库文件写入Xml文件的方法 求思路
- Struts1.x标签库手册
- 做一个功能 比喻控制一次只有10个人在使用 如果超过10个人 就的等待 并给出提示
- 用SSH做项目时 出现了个郁闷的事情,请高手帮忙
- 请前辈们 推荐几本JSP servlet方面的基础的书籍,暑假好看!
- 连接池
- 简单问题,看了不少帖子,但还是不会解决,请帮忙!
- 关于各个购物网站的历史价格
- hibernate配置错误-org.hibernate.MappingNotFoundException
以下是代码,可以参考下
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;public class DateUtil { /**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException { //调用,取2015年的第51周的开始日期和结束日期
Map<String, String> map=getSpecialDates(2015,6,51);
System.out.println(map);//{startDate=2015-12-18, endDate=2015-12-24}
//取2015年的当前时间所在的周
Date date = new Date();
long paradate = date.getTime();
int week=getSpecialWeek(2015,6,paradate);
System.out.println("当前时间所在的周为:"+week);
}
/**
* 取时间所在的周
* @param year
* @param startOfweek
* @param longdate
* @return
* @throws ParseException
*/
public static int getSpecialWeek(int year,int startOfweek,long longdate) throws ParseException{
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
int ret=0;
Map<Integer, Map<String, String>> map=getYearWeeks(year,startOfweek);
Iterator<Integer> iterator1=map.keySet().iterator();
while(iterator1.hasNext()){
Integer week = iterator1.next();
Map<String,String> map1=map.get(week);
String startdate=map1.get("startDate");
String enddate = map1.get("endDate");
long l1=sf.parse(startdate).getTime();
long l2=sf.parse(enddate).getTime();
if(longdate>=l1&&longdate<=l2){
ret=week;
break;
}
}
return ret;
}
/**
* @param year 哪一年的,格式2014、2015这些<br>
* @param startOfweek 星期几算我们星期的开头,比如星期五,对应的数字就是6,星期四对应的就是5……<br>
* @param weekIndex 第几周的索引<br>
* @return 这一周开始日期和结束日期的map<br>
*/
public static Map<String, String> getSpecialDates(int year, int startOfweek,int weekIndex) {
Map<Integer, Map<String, String>> map=getYearWeeks(year,startOfweek);
if(map!=null){
return map.get(weekIndex);
}
return null;
} /**
* 获得某一年的所有周数<br>
* @param year 年份,格式2014、2015<br>
* @param startOfWeek 星期几算我们星期的开头,比如星期五,对应的数字就是6,星期四对应的就是5……<br>
* @return
*/
public static Map<Integer, Map<String, String>> getYearWeeks(int year,int startOfWeek) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Map<Integer, Map<String, String>> retMap = new HashMap<Integer, Map<String, String>>();
//定义开始的calendar
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
//定义结束的calendar
Calendar calendarEnd = new GregorianCalendar();
calendarEnd.set(Calendar.YEAR, year);
calendarEnd.set(Calendar.MONTH, 11);
calendarEnd.set(Calendar.DAY_OF_MONTH, 31);
int count=1;
while (calendar.getTime().getTime() <= calendarEnd.getTime().getTime()) {
if (calendar.get(Calendar.DAY_OF_WEEK) == startOfWeek) {
String startDate=sf.format(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH, 6);
String endDate=sf.format(calendar.getTime());
if(calendar.YEAR>year){
break;
}
else{
Map<String,String> innerMap = new HashMap<String,String>();
innerMap.put("startDate", startDate);
innerMap.put("endDate", endDate);
retMap.put(count, innerMap);
count++;
}
}
else{
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
}
return retMap;
}}