在最近的一个oa中,我需要判断两个日期是否是同一周,根据一个给定的日期获得所属周的周一和周五的日期。
在完成以上任务时,我发现calendar 的确是一个功能强大的class。
下面给出源码,供兄弟们参考指正。
/*
* 创建日期 2005-3-30
package com.infoearth;
import java.sql.timestamp;
import java.text.simpledateformat;
import java.util.*;
/**
* @李春雷
*
public class manageweek {
//判断两个日期是否在同一周
boolean issameweekdates(date date1, date date2) {
calendar cal1 = calendar.getinstance();
calendar cal2 = calendar.getinstance();
cal1.settime(date1);
cal2.settime(date2);
int subyear = cal1.get(calendar.year) – cal2.get(calendar.year);
if (0 == subyear) {
if (cal1.get(calendar.week_of_year) == cal2.get(calendar.week_of_year))
return true;
}
else if (1 == subyear && 11 == cal2.get(calendar.month)) {
// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
if (cal1.get(calendar.week_of_year) == cal2.get(calendar.week_of_year))
return true;
}
else if (-1 == subyear && 11 == cal1.get(calendar.month)) {
if (cal1.get(calendar.week_of_year) == cal2.get(calendar.week_of_year))
return true;
}
return false;
}
//产生周序列
public static string getseqweek(){
calendar c = calendar.getinstance(locale.china);
string week = integer.tostring(c.get(calendar.week_of_year));
if(week.length()==1)week = "0" + week;
string year = integer.tostring(c.get(calendar.year));
return year+week;
}
//获得周一的日期
public static string getmonday(date date){
calendar c = calendar.getinstance();
c.settime(date);
c.set(calendar.day_of_week,calendar.monday);
return new simpledateformat("yyyy-mm-dd").format(c.gettime());
}
//获得周五的日期
public static string getfriday(date date){
calendar c = calendar.getinstance();
c.settime(date);
c.set(calendar.day_of_week,calendar.friday);
return new simpledateformat("yyyy-mm-dd").format(c.gettime());
}
public static void main(string[] args){
}
}