我有一个代码2014P07W4
,意思是:
2014
=年
P07
=一年中的第7个月
W4
=本月第4周。
我想计算出2014年7月第4周第一天的日期。在这个例子中,我希望看到2014年7月21日的日期。
2014年7月
从代码我知道周数= 4然后我希望能够计算日期21/7/2014。我假设一周的第一天是星期一
我问如何阅读该代码并获取指定的一周的第一天
希望这是一个漫长的一天更清楚
答案 0 :(得分:1)
您需要解析代码并提取年份,月份和周数。 然后,您可以使用此方法获取一周的开始日期:
int WeekStartDay(int year, int month, int weekNo)
{
DateTime monthStart = new DateTime(year, month, 1);
int monthStart_DayOfWeek = ((int)monthStart.DayOfWeek + 6) % 7;
int weekStart_DayOfMonth = 1;
if (1 < weekNo) {
weekStart_DayOfMonth += 7 - monthStart_DayOfWeek;
}
if (2 < weekNo) {
weekStart_DayOfMonth += 7 * (weekNo - 2);
}
return weekStart_DayOfMonth;
}
答案 1 :(得分:0)
参加下个月的第一天(2014/07/01),找到下周一(第2周的第一天),添加14天(第4周的第1天)。
DateTime date = new DateTime(2014, 7, 1);
int daysToFirstDayOf2ndWeek = date.DayOfWeek == DayOfWeek.Monday
? 7
: ((int)DayOfWeek.Monday - (int)date.DayOfWeek + 7) % 7;
DateTime firstDayOf2ndWeek = date.AddDays(daysToFirstDayOf2ndWeek);
DateTime firstDayOf4thWeek = firstDayOf2ndWeek.AddDays(14);
答案 2 :(得分:0)
可能会有效
string code = "2014P07W4";
int yr = int.Parse(code.Substring(0, 4));
int mnth = int.Parse(code.Substring(5, 2));
int week = int.Parse(code.Substring(8));
DateTime dt = new DateTime(yr, mnth, 1);
if (dt.DayOfWeek == DayOfWeek.Monday)
{
DateTime newdate = dt.AddDays((week - 1) * 7);
}
else
{
DateTime newdate = dt.AddDays((8 - (int)dt.DayOfWeek) % 7 + ((week - 2) * 7));
}