1
System.DateTime d = System.DateTime.Now;
2
System.Console.WriteLine(d.AddDays(1));
3
System.Console.WriteLine(d.AddHours(1));
4
System.Console.WriteLine(d.AddMilliseconds(1));
5
System.Console.WriteLine(d.AddMinutes(1));
6
System.Console.WriteLine(d.AddMonths(1));
7
System.Console.WriteLine(d.AddYears(1));
8
System.Console.WriteLine(d);//d没有改变值
9
d = d.AddYears(1);//需要重新赋值
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
一些关于日期的算法要牢记
1
System.Console.WriteLine(d.AddDays(-(d.Day-1)));//本月第一天
2
System.Console.WriteLine(d.AddDays(-d.Day));//上月最后一天
3
System.Console.WriteLine(d.AddDays(-(int)d.DayOfWeek));//本周第一天
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ok,我们来看一个例子:
1
System.DateTime dt = new System.DateTime(1949, 10, 1);
2
System.Console.WriteLine(dt.ToLongDateString());
3
System.DateTime d = System.DateTime.Now;
4
int toDay = d.Day;
5
int thisMonth = d.Month;
6
System.Console.WriteLine("当前日期:{0}", d.Date);
7
d = d.AddDays(-(toDay - 1));
8
System.Console.WriteLine("该月第一天:{0}", d.Date);
9![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
do
11
{
12
string toDayFlag = "";
13
if (d.Day == toDay)
14
{
15
toDayFlag = "*";
16
}
17
System.Console.WriteLine("{0}:{1}{2}", d.Day, d.DayOfWeek, toDayFlag);
18
d = d.AddDays(1);
19
}
20
while (d.Month == thisMonth);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
上面例子输出本月的所有日期和星期,并在当日标注*
那么开始巩固知识:
设一企业合同约定每月5号发工资,请输出该企业今年实际每月发工资的日期(若5号是周六或周日,则工资提前到周五发)
1
System.DateTime dt = System.DateTime.Now;
2
dt = dt.AddDays(-(dt.DayOfYear - 1));
3
System.Console.WriteLine("该年第一天:{0}", dt.Date);
4
dt = dt.AddDays(4);
5
int iDay = 0;
6
System.Console.WriteLine("定位到第一个月的5号:{0}", dt.Date);
7
do
8
{
9
if (dt.Month != 5 && dt.Month != 10)
10
{
11
if (dt.DayOfWeek == System.DayOfWeek.Saturday)
12
{ iDay = -1; }
13
if (dt.DayOfWeek == System.DayOfWeek.Sunday)
14
{ iDay = -2; }
15
}
16
else
17
{ iDay = -5; }
18
System.Console.WriteLine("{0}月的发薪水日期是{1}",
19
dt.Month, dt.AddDays(iDay).Date);
20
dt = dt.AddMonths(1);
21
iDay = 0;
22
}
23
while (dt.Year == System.DateTime.Now.Year);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
设每年9.1开学,若9.1不是星期一,则要求开学日期改为9月的第一个星期一,请输出从1980-2004年的每年开学日期
1
//方案1
2
System.DateTime dt = new System.DateTime(1949, 9, 1);
3
System.DateTime tmpdt;
4
do
5
{
6
if (dt.DayOfWeek == System.DayOfWeek.Monday)
7
{ tmpdt = dt; }
8
else
9
{
10
if (dt.DayOfWeek == System.DayOfWeek.Sunday)
11
{ tmpdt = dt.AddDays(1); }
12
else
13
{ tmpdt = dt.AddDays(7 - (int)dt.DayOfWeek + 1); }
14
}
15
System.Console.WriteLine("{0}年的9.1是{1}", dt.Year, dt.DayOfWeek);
16
System.Console.WriteLine("所以实际开学日期是:{0}", tmpdt.Date);
17
System.Console.WriteLine("------------------------");
18
dt = dt.AddYears(1);
19
}
20
while (dt.Year <= System.DateTime.Now.Year);
21![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
//方案2
24
System.DateTime dt = new System.DateTime(1949, 9, 1);
25
System.DateTime tmpdt;
26
do
27
{
28
if ((int)dt.DayOfWeek < 2)
29
{ tmpdt = dt.AddDays(1 - (int)dt.DayOfWeek); }
30
else
31
{
32
tmpdt = dt.AddDays(7 - (int)dt.DayOfWeek + 1);
33
}
34
System.Console.WriteLine("{0}年的9.1是{1}", dt.Year, (int)dt.DayOfWeek);
35
System.Console.WriteLine("所以实际开学日期是:{0}", tmpdt.Date);
36
System.Console.WriteLine("------------------------");
37
dt = dt.AddYears(1);
38
}
39
while (dt.Year <= System.DateTime.Now.Year);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
注意方案2的第29行,使用了01互换的方法,简化了周日和周一的计算
计算给定日期的年的每个月的周数
1
System.DateTime tmpdt = new DateTime(year, 1, 1);
2
int tmpMonth = tmpdt.Month;//记录当前月
3
int[] weeks = new int[12];//每个元素存放每月的星期数量
4
do
5
{
6
do
7
{//如果是周六就加1
8
if (tmpdt.DayOfWeek == System.DayOfWeek.Saturday)
9
{
10
weeks[tmpMonth - 1] = weeks[tmpMonth - 1] + 1;
11
}
12
tmpdt = tmpdt.AddDays(1);//下一天
13
}
14
while (tmpdt.Month == tmpMonth);//月循环
15
if (tmpdt.Day == 1 && tmpdt.DayOfWeek != System.DayOfWeek.Sunday)
16
{//如果每月的第一天不是周日,则上月再加一周
17
weeks[tmpMonth - 1] = weeks[tmpMonth - 1] + 1;
18
}
19
tmpMonth = tmpdt.Month;
20
}
21
while (tmpdt.Year == year);//年循环
22
for (int i = 0; i <= weeks.Length - 1; i++)
23
{
24
System.Console.WriteLine("{0}年 {1}月有{2}周", year, i + 1, weeks[i]);
25
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)