最近给领导做一个管理软件, 对日期有个特殊要求
第一周: xxxx - xxxx
第二周: xxxx - xxxx
。。。。
日期这个东西自打写程序开始就没好好针对性的去学习,api用法记的不牢啊, 自责一下, 自己很多JDK工具类都忘得一干二净。
找了个很有用的代码, 留这里备份一下吧, 有时间再多回顾回顾。
第一周: xxxx - xxxx
第二周: xxxx - xxxx
。。。。
日期这个东西自打写程序开始就没好好针对性的去学习,api用法记的不牢啊, 自责一下, 自己很多JDK工具类都忘得一干二净。
找了个很有用的代码, 留这里备份一下吧, 有时间再多回顾回顾。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestCalendar {
/**
* @param args
*/
public static void main(String[] args) {
int weeksOfYear = getMaxWeekNumOfYear(2012);
System.out.println("总共 "+weeksOfYear + " 周");
for(int i=1;i<= weeksOfYear;i++){
System.out.print("第"+(i)+"周:");
System.out.print(dateToString(getFirstDayOfWeek(2012,i)));
System.out.print(" ~ ");
System.out.println(dateToString(getLastDayOfWeek(2012,i)));
}
}
// 获取当前时间所在年的周数
public static int getWeekOfYear(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7);
c.setTime(date);
return c.get(Calendar.WEEK_OF_YEAR);
}
// 获取当前时间所在年的最大周数
public static int getMaxWeekNumOfYear(int year) {
Calendar c = new GregorianCalendar();
c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
return getWeekOfYear(c.getTime());
}
// 获取某年的第几周的开始日期
public static Date getFirstDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week * 7);
return getFirstDayOfWeek(cal.getTime());
}
// 获取某年的第几周的结束日期
public static Date getLastDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week * 7);
return getLastDayOfWeek(cal.getTime());
}
// 获取当前时间所在周的开始日期
public static Date getFirstDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
return c.getTime();
}
// 获取当前时间所在周的结束日期
public static Date getLastDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
return c.getTime();
}
public static String dateToString(Date date) {
if (date == null) {
return "";
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = df.format(date);
return dateStr;
}
}