当前位置: 代码迷 >> J2SE >> 跪JAVA 日期程序
  详细解决方案

跪JAVA 日期程序

热度:80   发布时间:2016-04-23 20:01:51.0
跪求一个JAVA 日期程序
1. 大家都知道一年当中有很多周,例如1周,2周,,,31周,,,40周.(记得周期不能超过当年的最大周数)
2. 我需要传递一个周期的整数.例如 25.  返回这周的第一天是多少号,最后一天是多少号.(时间格式为2015-01-01 00:00:00)
3. 我的每周范围不是星期一到星期日,  而是这星期5到下到个星期4 为一周!
4.最好给我一个方法,我只需要传递一个整数.就能return给我一个这周的开始时间和结束时间!
------解决思路----------------------
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

public class DateUtil {

/**
 * @param args
 */
public static void main(String[] args) {

//调用,取2015年的第51周的开始日期和结束日期
Map<String, String> map=getSpecialDates(2015,6,51);
System.out.println(map);
//{startDate=2015-12-18, endDate=2015-12-24}
}

/**
 * @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;
}

}
  相关解决方案