Dim x As DateTime = CDate(TextBox1.Text) '某一年的一月一号 Dim a As Integer Dim n As Integer '周数 n = 21 Select Case x.DayOfWeek Case DayOfWeek.Friday a = 5 Case DayOfWeek.Monday a = 8 Case DayOfWeek.Saturday a = 6 Case DayOfWeek.Sunday a = 7 Case DayOfWeek.Thursday a = 4 Case DayOfWeek.Tuesday a = 2 Case DayOfWeek.Wednesday a = 3 End Select Dim y As DateTime = x.AddDays(7 * n - a + 1) MessageBox.Show(CStr(y)) MessageBox.Show(CStr(y.AddDays(6)))
楼上的是VB的,转换成C#我试过了没有问题。
DateTime x = Convert.ToDateTime(TextBox1.Text); //某一年的一月一号 int a = 0; int n = 0;//周数 n = 21; switch (x.DayOfWeek) { Case DayOfWeek.Friday: a = 5; break; Case DayOfWeek.Monday: a = 8; break; Case DayOfWeek.Saturday: a = 6; break; ................ } DateTime y = x.AddDays(7 * n - a + 1); string stry = Convert.ToString(y); string stry1 = Convert.ToString(y.AddDays(6));
to C#DateTime x = System.Convert.ToDateTime(TextBox1.Text); int a; int n; n = 21; if (x.DayOfWeek == DayOfWeek.Friday) { a = 5; } else if (x.DayOfWeek == DayOfWeek.Monday) { a = 8; } else if (x.DayOfWeek == DayOfWeek.Saturday) { a = 6; } else if (x.DayOfWeek == DayOfWeek.Sunday) { a = 7; } else if (x.DayOfWeek == DayOfWeek.Thursday) { a = 4; } else if (x.DayOfWeek == DayOfWeek.Tuesday) { a = 2; } else if (x.DayOfWeek == DayOfWeek.Wednesday) { a = 3; } DateTime y = x.AddDays(7 * n - a + 1); MessageBox.Show(System.Convert.ToString(y)); MessageBox.Show(System.Convert.ToString(y.AddDays(6)));
没想到 http://www.developerfusion.com/utilities/convertvbtocsharp.aspx 会把switch Case 翻译成 if ..else if 呵呵……
这个问题有歧义,第一周怎么算呢?比如2005.01.01是礼拜六,那么第一周的起止日期应该是那个呢? a) 2005.01.01 - 2005.01.07 (实打实的7天算一周) b) 2005.01.02 - 2005.01.08 (老外算法,周日为第一天) c) 2005.01.03 - 2005.01.06 (大陆算法,礼拜一算第一天)应该选那个呢?
解决 int yy=2005,ww=21; DateTime dd=DateTime.Parse(yy.ToString().Trim()+"-01-01"); bdate=dd.AddDays(1-((int)dd.DayOfWeek)+ww*7).ToShortDateString();
DateTime dt2 = dt.AddDays(7 * 21);
dt2.DayOfWeek......
Dim a As Integer
Dim n As Integer '周数
n = 21
Select Case x.DayOfWeek
Case DayOfWeek.Friday
a = 5
Case DayOfWeek.Monday
a = 8
Case DayOfWeek.Saturday
a = 6
Case DayOfWeek.Sunday
a = 7
Case DayOfWeek.Thursday
a = 4
Case DayOfWeek.Tuesday
a = 2
Case DayOfWeek.Wednesday
a = 3
End Select
Dim y As DateTime = x.AddDays(7 * n - a + 1)
MessageBox.Show(CStr(y))
MessageBox.Show(CStr(y.AddDays(6)))
int a = 0;
int n = 0;//周数
n = 21;
switch (x.DayOfWeek)
{
Case DayOfWeek.Friday:
a = 5;
break;
Case DayOfWeek.Monday:
a = 8;
break;
Case DayOfWeek.Saturday:
a = 6;
break;
................
}
DateTime y = x.AddDays(7 * n - a + 1);
string stry = Convert.ToString(y);
string stry1 = Convert.ToString(y.AddDays(6));
int a;
int n;
n = 21;
if (x.DayOfWeek == DayOfWeek.Friday) {
a = 5;
} else if (x.DayOfWeek == DayOfWeek.Monday) {
a = 8;
} else if (x.DayOfWeek == DayOfWeek.Saturday) {
a = 6;
} else if (x.DayOfWeek == DayOfWeek.Sunday) {
a = 7;
} else if (x.DayOfWeek == DayOfWeek.Thursday) {
a = 4;
} else if (x.DayOfWeek == DayOfWeek.Tuesday) {
a = 2;
} else if (x.DayOfWeek == DayOfWeek.Wednesday) {
a = 3;
}
DateTime y = x.AddDays(7 * n - a + 1);
MessageBox.Show(System.Convert.ToString(y));
MessageBox.Show(System.Convert.ToString(y.AddDays(6)));
http://www.developerfusion.com/utilities/convertvbtocsharp.aspx
会把switch Case 翻译成 if ..else if 呵呵……
a) 2005.01.01 - 2005.01.07 (实打实的7天算一周)
b) 2005.01.02 - 2005.01.08 (老外算法,周日为第一天)
c) 2005.01.03 - 2005.01.06 (大陆算法,礼拜一算第一天)应该选那个呢?
int yy=2005,ww=21;
DateTime dd=DateTime.Parse(yy.ToString().Trim()+"-01-01");
bdate=dd.AddDays(1-((int)dd.DayOfWeek)+ww*7).ToShortDateString();