public DateTime GetDate(int year, int week) { DateTime date = new DateTime( year, 1, 1 ); DateTime m = date.AddDays( ( week - 1 ) * 7 ); int w = (int)( DayOfWeek.Monday - m.DayOfWeek ); if ( w == 1 ) { w = -6; } return m.AddDays( w ); }
//判断是否闰年 bool isLeapYear(int year){ return year%4==0&&year%100!=0||year%400==0; } //返回当前年份天数 int getYearDays(int year){ return isLeapYear(year)?366:365; } //返回当前年一月一日的星期 int getYearWeek(int year){ int i,days=0,week; if(year>=2000){ for(i=2000;i<year;i++) days+=getYearDays(i); week = (days+6)%7; }else{ for(i=year;i<2000;i++) days+=getYearDays(i); week = 6-days%7; } return week; } //返回每月天数 int MonthDays(int year,int month){ switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: return isLeapYear(year)?29:28; default : return -1; } } //返回当前年的当前月的天数 int getMonthWeek(int year,int month){ int i,days=0; for(i=1;i<month;i++){ days+=MonthDays(year,i); } return (getYearWeek(year)+days)%7; } //返回当前日期星期 int getDayWeek(int year,int month,int day){ return (getMonthWeek(year,month)+day-1)%7; } 直接调用getDayWeek(int,int,int)就得到星期。
如果这个不完全的一周从星期4开始,那么查询xxxx,1将得不到结果,是不是这个意思?
{
DateTime date = new DateTime( year, 1, 1 );
DateTime m = date.AddDays( ( week - 1 ) * 7 );
int w = (int)( DayOfWeek.Monday - m.DayOfWeek );
if ( w == 1 )
{
w = -6;
}
return m.AddDays( w );
}
//判断是否闰年
bool isLeapYear(int year){
return year%4==0&&year%100!=0||year%400==0;
}
//返回当前年份天数
int getYearDays(int year){
return isLeapYear(year)?366:365;
}
//返回当前年一月一日的星期
int getYearWeek(int year){
int i,days=0,week;
if(year>=2000){
for(i=2000;i<year;i++) days+=getYearDays(i);
week = (days+6)%7;
}else{
for(i=year;i<2000;i++) days+=getYearDays(i);
week = 6-days%7;
}
return week;
}
//返回每月天数
int MonthDays(int year,int month){
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
return isLeapYear(year)?29:28;
default :
return -1;
}
}
//返回当前年的当前月的天数
int getMonthWeek(int year,int month){
int i,days=0;
for(i=1;i<month;i++){
days+=MonthDays(year,i);
}
return (getYearWeek(year)+days)%7;
}
//返回当前日期星期
int getDayWeek(int year,int month,int day){
return (getMonthWeek(year,month)+day-1)%7;
}
直接调用getDayWeek(int,int,int)就得到星期。
private DateTime getDateOfWeek(int year,int week)
{
DateTime dt = new DateTime(year, 1, 1);
return dt.AddDays((week - 1) * 7 - (int)dt.DayOfWeek + 1);
}