C# DateTime值来创建单独的类函数
我的所有类函数中都包含以下内容:C# DateTime值来创建单独的类函数,c#,asp.net,class,C#,Asp.net,Class,我的所有类函数中都包含以下内容: var getDay = 3; //DateTime now = DateTime.Now; DateTime now = DateTime.UtcNow.Date; //DateTime now = new DateTime(2015, 11, 09); //int dayOfWeek = (int)now.DayOfWeek; DateTime startOfWeek6 = now.AddDays((-(int)now.DayOfWeek + 1) -
var getDay = 3;
//DateTime now = DateTime.Now;
DateTime now = DateTime.UtcNow.Date;
//DateTime now = new DateTime(2015, 11, 09);
//int dayOfWeek = (int)now.DayOfWeek;
DateTime startOfWeek6 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay);
DateTime endOfWeek6 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6);
DateTime startOfWeek5 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 7);
DateTime endOfWeek5 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 7);
DateTime startOfWeek4 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 14);
DateTime endOfWeek4 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 14);
DateTime startOfWeek3 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 21);
DateTime endOfWeek3 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 21);
DateTime startOfWeek2 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 28);
DateTime endOfWeek2 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 28);
DateTime startOfWeek1 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 35);
DateTime endOfWeek1 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 35);
不粘贴每个类函数中的所有函数,是否可以创建一个函数类,这样我就可以把它放在那里
public DateTime GetStartOfWeek(DateTime now, int getDay, int n)
{
return now.AddDays((-(int)now.DayOfWeek + 1) - getDay - n*7);
}
public DateTime GetEndOfWeek(DateTime now, int getDay, int n)
{
return now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - n*7);
}
而且用后像
public List<Tuple<DateTime,DateTime>> GetStartsAndEndsOfWeeks(int numOfWeeks, int getDay, DateTime now)
{
var list = new List<Tuple<DateTime,DateTime>>();
for(int i = 0, i < numOfWeek, i++)
{
list.Add(new Tuple {
Item1 = GetStartOfWeek(now, getDay, i),
Item2 = GetEndOfWeek(now, getDay, i),
});
}
return list;
}
public List getstartsandedsofweeks(int numOfWeeks、int getDay、DateTime now)
{
var list=新列表();
对于(int i=0,i
引入一个类来保存一周的日期:
public class Week
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
然后创建一个方法,该方法返回这些数据的集合,例如使用List
:
public List GetWeeks()
{
var weeks=新列表();
每周=新的一周
{
Start=now.AddDays((((int)now.DayOfWeek+1)-getDay),
End=now.AddDays((((int)now.DayOfWeek+1)-getDay+6),
}
周。添加(周);
//再加上几周
返回周;
}
您可能希望参数化此方法,以允许它创建任意的、不固定的周数。像这样吗
public abstract class WeekAcrossClasses
{
public WeekAcrossClasses()
{
}
protected List<DateTime> ReturnWeek(int getDay)
{
List<DateTime> returnList = new List<DateTime>();
//DateTime now = DateTime.Now;
DateTime now = DateTime.UtcNow.Date;
//DateTime now = new DateTime(2015, 11, 09);
//int dayOfWeek = (int)now.DayOfWeek;
DateTime startOfWeek6 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay);
DateTime endOfWeek6 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6);
DateTime startOfWeek5 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 7);
DateTime endOfWeek5 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 7);
DateTime startOfWeek4 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 14);
DateTime endOfWeek4 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 14);
DateTime startOfWeek3 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 21);
DateTime endOfWeek3 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 21);
DateTime startOfWeek2 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 28);
DateTime endOfWeek2 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 28);
DateTime startOfWeek1 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - 35);
DateTime endOfWeek1 = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - 35);
returnList.Add(startOfWeek6); //index 0
returnList.Add(endOfWeek6); //index 1
returnList.Add(startOfWeek5); //index 2
returnList.Add(endOfWeek5); // ...
returnList.Add(startOfWeek4);
returnList.Add(endOfWeek4);
returnList.Add(startOfWeek3);
returnList.Add(endOfWeek3);
returnList.Add(startOfWeek2);
returnList.Add(endOfWeek2);
returnList.Add(startOfWeek1);
returnList.Add(endOfWeek1); //index 10
return returnList;
}
}
公共抽象类WeekAcrossClasses
{
公共课
{
}
受保护列表返回周(int getDay)
{
List returnList=新列表();
//DateTime now=DateTime.now;
DateTime now=DateTime.UtcNow.Date;
//DateTime now=新的日期时间(2015,11,09);
//int dayOfWeek=(int)now.dayOfWeek;
DateTime startOfWeek6=now.AddDays(((int)now.DayOfWeek+1)-getDay);
DateTime endOfWeek6=now.AddDays((((int)now.DayOfWeek+1)-getDay+6);
DateTime startOfWeek5=now.AddDays((((int)now.DayOfWeek+1)-getDay-7);
DateTime endOfWeek5=now.AddDays((((int)now.DayOfWeek+1)-getDay+6-7);
DateTime startOfWeek4=now.AddDays((((int)now.DayOfWeek+1)-getDay-14);
DateTime endOfWeek4=now.AddDays((((int)now.DayOfWeek+1)-getDay+6-14);
DateTime startOfWeek3=now.AddDays((((int)now.DayOfWeek+1)-getDay-21);
DateTime endOfWeek3=now.AddDays((((int)now.DayOfWeek+1)-getDay+6-21);
DateTime startOfWeek2=now.AddDays((((int)now.DayOfWeek+1)-getDay-28);
DateTime endOfWeek2=now.AddDays((((int)now.DayOfWeek+1)-getDay+6-28);
DateTime startOfWeek1=now.AddDays(((int)now.DayOfWeek+1)-getDay-35);
DateTime endOfWeek1=now.AddDays((((int)now.DayOfWeek+1)-getDay+6-35);
returnList.Add(startOfWeek6);//索引0
returnList.Add(endOfWeek6);//索引1
returnList.Add(startOfWeek5);//索引2
returnList.Add(endOfWeek5);/。。。
返回列表。添加(开始到星期四);
returnList.Add(endOfWeek4);
返回列表。添加(开始至周末3);
returnList.Add(endOfWeek3);
返回列表。添加(开始至周末2);
returnList.Add(endOfWeek2);
returnList.Add(startOfWeek1);
returnList.Add(endOfWeek1);//索引10
退货清单;
}
}
该代码可用于其他类,如:
public class ArbClass : WeekAcrossClasses
{
ArbClass()
{
List<DateTime> x = ReturnWeek(5);
}
}
公共类ArbClass:WeeKaCrossClass
{
类()
{
列表x=返回周(5);
}
}
确实应该考虑尝试使调用更小,因为有很多可重复的代码可以做得更小。
<代码>保护列表GETLIST(int计数,int GETNEY) protected List<Week> getList(int count, int getDay)
{
var list = new List<Week>();
DateTime now = DateTime.Now;
for (int n = 0; n < count; n++)
{
Week w = new Week();
w.Start = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - n * 7);
w.End = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - n * 7);
list.Add(w);
}
return list;
}
public class Week{ public DateTime Start { get; set; } public DateTime nd { get; set; }}
{
var list=新列表();
DateTime now=DateTime.now;
对于(int n=0;nweeks[0]。Start
。是否可以将其作为Start、End等?是的,weeks[0]。Start
,weeks[0]。End
,weeks[1]。Start
,weeks[1]。End
等等。一个方法只能有一个返回变量(或多个out参数,但您确实不希望这样),并且不建议使用多个编号的变量。学习如何使用集合。这样好吗:var getWeeks=getWeeks();var startOfWeek6=getWeeks[0]。startOfWeek6;var endOfWeek6=getWeeks[0]。endOfWeek6;var startOfWeek5=getWeeks[0]。startOfWeek5;var endOfWeek5=getWeeks[0]。endOfWeek5;不要在没有解释的情况下复制粘贴两个现有答案。
protected List<Week> getList(int count, int getDay)
{
var list = new List<Week>();
DateTime now = DateTime.Now;
for (int n = 0; n < count; n++)
{
Week w = new Week();
w.Start = now.AddDays((-(int)now.DayOfWeek + 1) - getDay - n * 7);
w.End = now.AddDays((-(int)now.DayOfWeek + 1) - getDay + 6 - n * 7);
list.Add(w);
}
return list;
}
public class Week{ public DateTime Start { get; set; } public DateTime nd { get; set; }}