如何取得给定月的第i个星期几? 不明白你的意思。通过 日期变量.Month可以取得日期所在的月份。.DayOfWeek 可以取得日期所在的星期 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如:int i,j; i=System.Convert.ToInt32(this.textBox1.Text.Substring(0,1)); j=System.Convert.ToInt32(this.textBox1.Text.Substring(1,1)); DateTime dt; dt=System.Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-01")); int n=System.Convert.ToInt32(dt.DayOfWeek); n=(i-1)*7+j-n; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString()); 不是这样子,我是想取得一个DateTime,比如说母亲节是5月第2个星期日,我用这个函数参数是5月1日或者随便一个当月的DateTime,i=2,j=0,得出今年的母亲节就是2004-05-09 public static DateTime(Datetime d,int i,int j){DateTime dt; dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01")); int n=System.Convert.ToInt32(dt.DayOfWeek); n=(i-1)*7+j-n; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());} public enum CN_Week{ 星期五 = DayOfWeek.Friday, 星期一 = DayOfWeek.Monday, 星期六 = DayOfWeek.Saturday, 星期日 = DayOfWeek.Sunday, 星期四 = DayOfWeek.Thursday, 星期二 = DayOfWeek.Tuesday, 星期三 = DayOfWeek.Wednesday,}private void button1_Click(object sender, System.EventArgs e){ CN_Week week ; DateTime dt = DateTime.Now; DateTime firstDay = new DateTime(dt.Year,dt.Month,1); TimeSpan ts = dt-firstDay; int days = ts.Days; int ws = days/7 + 1; week = (CN_Week)dt.DayOfWeek; MessageBox.Show(dt.ToString("yyyy年MM月dd日") + " 是 " + dt.ToString("yyyy年MM月") + "的第 " + ws.ToString() + " 周的 " + week.ToString());} public static DateTime(Datetime d,int i,int j){DateTime dt; dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01")); int n=System.Convert.ToInt32(dt.DayOfWeek); n=(i-1)*7+j-n; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());} 又改了一下:public enum CN_Week{ 星期五 = DayOfWeek.Friday, 星期一 = DayOfWeek.Monday, 星期六 = DayOfWeek.Saturday, 星期日 = DayOfWeek.Sunday, 星期四 = DayOfWeek.Thursday, 星期二 = DayOfWeek.Tuesday, 星期三 = DayOfWeek.Wednesday,}private string GetWeekString(DateTime date){ DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间 int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}"; result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;}private void button1_Click(object sender, System.EventArgs e){ MessageBox.Show( this.GetWeekString(DateTime.Now)); return;} 更正:public static DateTime(Datetime d,int i,int j){DateTime dt; dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01")); int n=System.Convert.ToInt32(dt.DayOfWeek); int n=System.Convert.ToInt32(dt.DayOfWeek); if (j-n>=0) n=(i-1)*7+j-n+1; else n=i*7+j-n+1; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());} DateTime.DayOfWeek 属性 它指示星期几。该属性值的范围从零(表示星期日)到六(表示星期六)。Calendar.GetWeekOfYear 方法 返回年中包括指定 DateTime 中的日期的星期。public virtual int GetWeekOfYear( DateTime time, CalendarWeekRule rule, DayOfWeek firstDayOfWeek); To hbxtlhx(下着春雨的天) :很感谢你的热心,但是你写的完全不对题啊,我并非要得到这天是第几周的星期几而是要已知第几个星期几来求出日期,如上贴,求母亲节几月几号? To楼主,我的更正后的算法是正确的:public static DateTime(Datetime d,int i,int j){DateTime dt; dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01")); int n=System.Convert.ToInt32(dt.DayOfWeek); int n=System.Convert.ToInt32(dt.DayOfWeek); if (j-n>=0) n=(i-1)*7+j-n+1; else n=i*7+j-n+1; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());} 无聊写了一个练手……public static DateTime myDate(DateTime d,int i,int j) { if(i>=1 && i<=4) { int count=0; DateTime No1=Convert.ToDateTime(d.Year.ToString()+"-"+d.Month.ToString()+"-1"); for(DateTime tmp=No1;tmp<No1.AddMonths(1);tmp=tmp.AddDays(1)) { if(Convert.ToInt32(tmp.DayOfWeek)==j) { count++; tmp=tmp.AddDays(6); } if(count==i) { return tmp.AddDays(-6); } } } if(i==5) { DateTime No1=Convert.ToDateTime(d.AddMonths(1).Year.ToString()+"-"+d.AddMonths(1).Month.ToString()+"-1"); for(DateTime tmp=No1.AddDays(-1);tmp>No1.AddMonths(-1);tmp=tmp.AddDays(-1)) { if(Convert.ToInt32(tmp.DayOfWeek)==j) { return tmp; } } } return d; //失败 } wuzhijie(阿杰) 的代码比我精简……不过好像有点bug,n会有大于31的情况没有考虑……其他还不知道 再热闹一下,刚才整理了一下自己的代码,觉得好玩,拿来帖上,没有别的意思,我想上面的朋友已经解决问题了,不过看到还没有结帖就又改了一下粘了上来:) //日期格举 public enum CN_Week { 星期五 = DayOfWeek.Friday, 星期一 = DayOfWeek.Monday, 星期六 = DayOfWeek.Saturday, 星期日 = DayOfWeek.Sunday, 星期四 = DayOfWeek.Thursday, 星期二 = DayOfWeek.Tuesday, 星期三 = DayOfWeek.Wednesday, } //得到一个月中第几周周几是哪一天 public string GetDateString (int year, int month, int number, CN_Week week, out DateTime day) { int tmpNumber = 0; if ( number == 0 ) { number = 1; } if ( number > 0 ) { tmpNumber = number - 1; } else { tmpNumber = number; } DateTime firstDay; firstDay=new DateTime(year,month,1); int days=(number) * 7 + (int)week - (int)firstDay.DayOfWeek; DateTime tmpDay = firstDay.AddDays(days); string result = "{0}年 {1}月 {2}周的 {3} 是 {4}"; string tmpStr = null; if ( number > 0 ) { tmpStr = "第" + number.ToString(); } else { tmpStr = "倒数第" + number.ToString(); } result = string.Format( result, year.ToString(), month.ToString(), tmpStr, week.ToString(), tmpDay.ToString("yyyy年MM月dd日")); day = tmpDay; return result; } //得到一个日期在周几 private string GetWeekString(DateTime date) { DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间 int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}"; result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result; } private void button1_Click(object sender, System.EventArgs e) { DateTime day; string msg = GetDateString(int.Parse(textBox2.Text), int.Parse(this.textBox3.Text), int.Parse(this.textBox1.Text), CN_Week.星期日, out day); MessageBox.Show(msg); MessageBox.Show(day.ToString()); //MessageBox.Show( this.GetWeekString(new DateTime( 2004,5,9))); return; } 现在办事真是粗心,再改一下,呵呵.----------------------------------------------//日期格举public enum CN_Week{ 星期五 = DayOfWeek.Friday, 星期一 = DayOfWeek.Monday, 星期六 = DayOfWeek.Saturday, 星期日 = DayOfWeek.Sunday, 星期四 = DayOfWeek.Thursday, 星期二 = DayOfWeek.Tuesday, 星期三 = DayOfWeek.Wednesday,}//得到一个月中第几周周几是哪一天public string GetDateString (int year, int month, int number, CN_Week week, out DateTime day){ int tmpNumber = 0; if ( number == 0 ) { number = 1; } if ( number > 0 ) { tmpNumber = number - 1; } else { tmpNumber = number; } DateTime firstDay=new DateTime(year,month,1); int days= number * 7 + (int)week - (int)firstDay.DayOfWeek; DateTime tmpDay = firstDay.AddDays(days); string result = "{0}年 {1}月 {2}周的 {3} 是 {4}"; string tmpStr = null; if ( number > 0 ) { tmpStr = "第" + number.ToString(); } else { tmpStr = "倒数第" + Math.Abs(number).ToString(); } result = string.Format( result, year.ToString(), month.ToString(), tmpStr, week.ToString(), tmpDay.ToString("yyyy年MM月dd日")); day = tmpDay; return result;}//得到一个日期在周几private string GetWeekString(DateTime date){ DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间 int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}"; result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;}private void button1_Click(object sender, System.EventArgs e){ DateTime day; string msg = GetDateString(int.Parse(textBox2.Text), int.Parse(this.textBox3.Text), int.Parse(this.textBox1.Text), CN_Week.星期日, out day); MessageBox.Show(msg); MessageBox.Show(day.ToString()); //MessageBox.Show( this.GetWeekString(new DateTime( 2004,5,9))); return;}-------------------------------------------我闪人................ to: hbxtlhx(下着春雨的天)好像你和wuzhijie(阿杰)的代码一样……都没有考虑这个月实际有几天……转时间的时候会出错^_^ 谢谢大家,问题已经解决,我这里贴出完整的代码public static DateTime getSpecificDayOfMonth(DateTime d,int i,System.DayOfWeek j) { if (i < -1 || i > 4 || i == 0) //-1代表最后一个,1-4和代表第一 到第4个 { throw new Exception("invalid parameter"); } DateTime dt = new DateTime(); if(i != -1) { if (j < DateHelper.getFirstDayOfMonth(d).DayOfWeek) { dt = new DateTime(d.Year,d.Month,i * 7 + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getFirstDayOfMonth(d).DayOfWeek) + 1); } else { dt = new DateTime(d.Year,d.Month,(i - 1) * 7 + Convert.ToInt16(j) -Convert.ToInt16(DateHelper.getFirstDayOfMonth(d).DayOfWeek) + 1); } } else { if (j > DateHelper.getLastDayOfMonth(d).DayOfWeek) { dt = new DateTime(d.Year,d.Month,DateHelper.getLastDayOfMonth(d).Day + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getLastDayOfMonth(d).DayOfWeek) - 7); } else { dt = new DateTime(d.Year,d.Month,DateHelper.getLastDayOfMonth(d).Day + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getLastDayOfMonth(d).DayOfWeek)); } } return dt; } 关于WCF的问题 界面新手问题 页面抓取的问题~ 提供免费SVN空间,可以建立私有项目 设计个按键 按键触发定时器 200分:SQL Server 2005报表服务如何使用? 请问一般的license 是怎么加密的? 请问C#输出word文档(摸版) VS.Net2003 中DataGridTextBoxColumn.Edit 方法的示例是否正确? 我写了一个Dgv数据库的循环,提示错误,求解 如何在DataGride中帮定DropDown ? 请问如何在WinForm 的DataGrid的列中显示 一个 ComboBox 控件?
int i,j;
i=System.Convert.ToInt32(this.textBox1.Text.Substring(0,1));
j=System.Convert.ToInt32(this.textBox1.Text.Substring(1,1));
DateTime dt;
dt=System.Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-01"));
int n=System.Convert.ToInt32(dt.DayOfWeek);
n=(i-1)*7+j-n;
this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
我用这个函数参数是5月1日或者随便一个当月的DateTime,i=2,j=0,
得出今年的母亲节就是2004-05-09
{DateTime dt;
dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
int n=System.Convert.ToInt32(dt.DayOfWeek);
n=(i-1)*7+j-n;
this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
}
{
星期五 = DayOfWeek.Friday,
星期一 = DayOfWeek.Monday,
星期六 = DayOfWeek.Saturday,
星期日 = DayOfWeek.Sunday,
星期四 = DayOfWeek.Thursday,
星期二 = DayOfWeek.Tuesday,
星期三 = DayOfWeek.Wednesday,}
private void button1_Click(object sender, System.EventArgs e)
{
CN_Week week ;
DateTime dt = DateTime.Now; DateTime firstDay = new DateTime(dt.Year,dt.Month,1);
TimeSpan ts = dt-firstDay;
int days = ts.Days; int ws = days/7 + 1;
week = (CN_Week)dt.DayOfWeek; MessageBox.Show(dt.ToString("yyyy年MM月dd日") + " 是 " + dt.ToString("yyyy年MM月") + "的第 " + ws.ToString() + " 周的 " + week.ToString());
}
{DateTime dt;
dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
int n=System.Convert.ToInt32(dt.DayOfWeek);
n=(i-1)*7+j-n;
this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
}
public enum CN_Week
{
星期五 = DayOfWeek.Friday,
星期一 = DayOfWeek.Monday,
星期六 = DayOfWeek.Saturday,
星期日 = DayOfWeek.Sunday,
星期四 = DayOfWeek.Thursday,
星期二 = DayOfWeek.Tuesday,
星期三 = DayOfWeek.Wednesday,}
private string GetWeekString(DateTime date)
{
DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间
int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}";
result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;
}
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show( this.GetWeekString(DateTime.Now)); return;
}
public static DateTime(Datetime d,int i,int j)
{DateTime dt;
dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
int n=System.Convert.ToInt32(dt.DayOfWeek);
int n=System.Convert.ToInt32(dt.DayOfWeek);
if (j-n>=0)
n=(i-1)*7+j-n+1;
else
n=i*7+j-n+1; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
}
DateTime time,
CalendarWeekRule rule,
DayOfWeek firstDayOfWeek
);
很感谢你的热心,但是你写的完全不对题啊,我并非要得到这天是第几周的星期几
而是要已知第几个星期几来求出日期,如上贴,求母亲节几月几号?
public static DateTime(Datetime d,int i,int j)
{DateTime dt;
dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
int n=System.Convert.ToInt32(dt.DayOfWeek);
int n=System.Convert.ToInt32(dt.DayOfWeek);
if (j-n>=0)
n=(i-1)*7+j-n+1;
else
n=i*7+j-n+1; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
}
{
if(i>=1 && i<=4)
{
int count=0; DateTime No1=Convert.ToDateTime(d.Year.ToString()+"-"+d.Month.ToString()+"-1"); for(DateTime tmp=No1;tmp<No1.AddMonths(1);tmp=tmp.AddDays(1))
{
if(Convert.ToInt32(tmp.DayOfWeek)==j)
{
count++;
tmp=tmp.AddDays(6);
} if(count==i)
{
return tmp.AddDays(-6);
}
}
} if(i==5)
{
DateTime No1=Convert.ToDateTime(d.AddMonths(1).Year.ToString()+"-"+d.AddMonths(1).Month.ToString()+"-1");
for(DateTime tmp=No1.AddDays(-1);tmp>No1.AddMonths(-1);tmp=tmp.AddDays(-1))
{
if(Convert.ToInt32(tmp.DayOfWeek)==j)
{
return tmp;
}
}
} return d; //失败 }
public enum CN_Week
{
星期五 = DayOfWeek.Friday,
星期一 = DayOfWeek.Monday,
星期六 = DayOfWeek.Saturday,
星期日 = DayOfWeek.Sunday,
星期四 = DayOfWeek.Thursday,
星期二 = DayOfWeek.Tuesday,
星期三 = DayOfWeek.Wednesday, }
//得到一个月中第几周周几是哪一天
public string GetDateString (int year, int month, int number, CN_Week week, out DateTime day)
{
int tmpNumber = 0; if ( number == 0 )
{
number = 1;
} if ( number > 0 )
{
tmpNumber = number - 1;
}
else
{
tmpNumber = number;
} DateTime firstDay;
firstDay=new DateTime(year,month,1); int days=(number) * 7 + (int)week - (int)firstDay.DayOfWeek;
DateTime tmpDay = firstDay.AddDays(days); string result = "{0}年 {1}月 {2}周的 {3} 是 {4}"; string tmpStr = null;
if ( number > 0 )
{
tmpStr = "第" + number.ToString();
}
else
{
tmpStr = "倒数第" + number.ToString();
}
result = string.Format( result, year.ToString(), month.ToString(), tmpStr, week.ToString(), tmpDay.ToString("yyyy年MM月dd日"));
day = tmpDay;
return result;
}
//得到一个日期在周几
private string GetWeekString(DateTime date)
{
DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间
int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}";
result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;
}
private void button1_Click(object sender, System.EventArgs e)
{
DateTime day;
string msg = GetDateString(int.Parse(textBox2.Text), int.Parse(this.textBox3.Text), int.Parse(this.textBox1.Text), CN_Week.星期日, out day); MessageBox.Show(msg);
MessageBox.Show(day.ToString());
//MessageBox.Show( this.GetWeekString(new DateTime( 2004,5,9)));
return;
}
//日期格举
public enum CN_Week
{
星期五 = DayOfWeek.Friday,
星期一 = DayOfWeek.Monday,
星期六 = DayOfWeek.Saturday,
星期日 = DayOfWeek.Sunday,
星期四 = DayOfWeek.Thursday,
星期二 = DayOfWeek.Tuesday,
星期三 = DayOfWeek.Wednesday,}
//得到一个月中第几周周几是哪一天
public string GetDateString (int year, int month, int number, CN_Week week, out DateTime day)
{
int tmpNumber = 0; if ( number == 0 )
{
number = 1;
} if ( number > 0 )
{
tmpNumber = number - 1;
}
else
{
tmpNumber = number;
} DateTime firstDay=new DateTime(year,month,1); int days= number * 7 + (int)week - (int)firstDay.DayOfWeek;
DateTime tmpDay = firstDay.AddDays(days); string result = "{0}年 {1}月 {2}周的 {3} 是 {4}"; string tmpStr = null;
if ( number > 0 )
{
tmpStr = "第" + number.ToString();
}
else
{
tmpStr = "倒数第" + Math.Abs(number).ToString();
}
result = string.Format( result, year.ToString(), month.ToString(), tmpStr, week.ToString(), tmpDay.ToString("yyyy年MM月dd日"));
day = tmpDay; return result;
}
//得到一个日期在周几
private string GetWeekString(DateTime date)
{
DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间
int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}";
result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;
}
private void button1_Click(object sender, System.EventArgs e)
{
DateTime day;
string msg = GetDateString(int.Parse(textBox2.Text), int.Parse(this.textBox3.Text), int.Parse(this.textBox1.Text), CN_Week.星期日, out day); MessageBox.Show(msg);
MessageBox.Show(day.ToString());
//MessageBox.Show( this.GetWeekString(new DateTime( 2004,5,9)));
return;
}
-------------------------------------------
我闪人................
public static DateTime getSpecificDayOfMonth(DateTime d,int i,System.DayOfWeek j)
{
if (i < -1 || i > 4 || i == 0) //-1代表最后一个,1-4和代表第一 到第4个
{
throw new Exception("invalid parameter");
}
DateTime dt = new DateTime();
if(i != -1)
{
if (j < DateHelper.getFirstDayOfMonth(d).DayOfWeek)
{
dt = new DateTime(d.Year,d.Month,i * 7 + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getFirstDayOfMonth(d).DayOfWeek) + 1);
}
else
{
dt = new DateTime(d.Year,d.Month,(i - 1) * 7 + Convert.ToInt16(j) -Convert.ToInt16(DateHelper.getFirstDayOfMonth(d).DayOfWeek) + 1);
}
}
else
{
if (j > DateHelper.getLastDayOfMonth(d).DayOfWeek)
{
dt = new DateTime(d.Year,d.Month,DateHelper.getLastDayOfMonth(d).Day + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getLastDayOfMonth(d).DayOfWeek) - 7);
}
else
{
dt = new DateTime(d.Year,d.Month,DateHelper.getLastDayOfMonth(d).Day + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getLastDayOfMonth(d).DayOfWeek));
}
}
return dt;
}