Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DateTime值来创建单独的类函数_C#_Asp.net_Class - Fatal编程技术网

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;n是。您希望此方法返回什么?所有日期时间,如startOfWeek6、endOfWeek6、startOfWeek5等,将它们粘贴到集合中,如数组或列表。您能给出一个简单的示例吗?好的。我不确定你想要什么。你想在几个类中调用一个方法吗?在所有类中都是这样吗?然后使用继承或单例。你想要一些像Konstantin已经做的那样跨多周工作的代码吗?我想返回所有的日期时间,比如startOfWeek6、endOfWeek6、startOfWeek5等等。我将如何调用Star并从另一个函数结束?这是正确的吗?var getWeeks=getWeeks();getWeeks.Start for Start?否,该方法返回一个集合,因此您需要指示要访问的条目,例如
weeks[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; }}