c# 计算当月第几周 算法

如2010-1-30号,怎么才能计算出他是第五周的第6天。谢谢!答案一经采纳另加5分。

第1个回答  2010-01-30
private void ShowWeek()
{
//目标日期
DateTime dt = new DateTime(2010, 1, 30);

//该年1月1日所在的周,定义为第一周,sunday为0,monday为1
DateTime dtFirst = new DateTime(dt.Year, 1, 1);

//目标日期距离第一天的天数
int daysCount = Convert.ToInt32((dt - dtFirst).TotalDays);

//将第一天的日期补齐
daysCount += Convert.ToInt32(dtFirst.DayOfWeek);

//目标日期所在的周
int weeksCount = daysCount / 7;

//目标日期所在的天
int dayIdx = Convert.ToInt32(dt.DayOfWeek);

//显示结果
MessageBox.Show("日期" + dt.ToShortDateString() + "是第" + (weeksCount + 1).ToString() + "周的第" + dayIdx.ToString() + "天。");

}本回答被提问者采纳
第2个回答  2010-01-30
有个方法可以直接得到
DateTime time = DateTime.Parse("2010-1-30");
time.DayOf();
然后还有很多方法,可以直接得到一个时间判断方面的东西
可以自己去试一下
第3个回答  2010-01-30
static void Main(string[] args)
{ //如何计算当前日期是本月的第几周?

//得到当前为这个月的第几天
int day = Convert.ToInt32(DateTime.Now.Day);
Console.WriteLine("当前是这个月的第" + day + "天");
//得到是当前年的哪一天
int yearday = Convert.ToInt32(DateTime.Now.DayOfYear);
Console.WriteLine(yearday);
//得到当前年
int year = Convert.ToInt32(DateTime.Now.Year);
Console.WriteLine(year);
//得到月份
int month = Convert.ToInt32(DateTime.Now.Month);
int totalDays = 0;
bool inRn;//是否为闰年
if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0)
{
inRn = true;
}
else
{
inRn = false;//平年
}
for (int i = 1900; i < year; i++)
{
/* 判断闰年或平年,并进行天数累加 */
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
{ // 判断是否为闰年
totalDays = totalDays + 366; // 闰年366天
}
else
{
totalDays = totalDays + 365; // 平年365天
}
}
Console.WriteLine(totalDays);
int days = 0;
int beforeDays = 0;
for (int i = 1; i <= month; i++)
{
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
if (inRn)
{
days = 29;
}
else
{
days = 28;
}
break;
default:
days = 30;
break;
}
if (i < month)
{
beforeDays = beforeDays + days;
}

}
Console.WriteLine("此月份之前的天数" + beforeDays);
totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数
int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0
int temp = 1 + totalDays % 7; // 从1900年1月1日推算
if (temp == 7)
{ // 求当月第一天
firstDayOfMonth = 0; // 周日
}
else
{
firstDayOfMonth = temp;
}
Console.WriteLine("该月第一天是星期" + firstDayOfMonth);

}
第4个回答  2010-01-31
经典问题,留个脚印。