如何在C#中动态创建一周天数数组?

如何在C#中动态创建一周天数数组?,c#,.net,C#,.net,而不是指定 string[]week_Days={“星期一”、“星期二”…} 如何将天数动态设置为数组 我试着解决它,但没能从“星期天”开始- 您可以使用枚举: 编辑:如果需要更改一周的开始日期: private static string[] GetWeekdays(DayOfWeek firstDayOfWeek) { string[] weekdays = new string[7]; DateTime dateTime = DateTime.Now; while

而不是指定 string[]week_Days={“星期一”、“星期二”…}

如何将天数动态设置为数组

我试着解决它,但没能从“星期天”开始-

您可以使用枚举:

编辑:如果需要更改一周的开始日期:

private static string[] GetWeekdays(DayOfWeek firstDayOfWeek)
{
    string[] weekdays = new string[7];
    DateTime dateTime = DateTime.Now;
    while (dateTime.DayOfWeek != firstDayOfWeek)
    {
        // Find the next date with start day of week
        dateTime = dateTime.AddDays(1); 
    }
    for (int i = 0; i < 7; i++)
    {
        // Get day of week of current day, add 1 day, iterate 7 times.
        weekdays[i] = dateTime.DayOfWeek.ToString();
        dateTime = dateTime.AddDays(1);
    }
    return weekdays;
}
private静态字符串[]GetWeekdays(DayOfWeek firstDayOfWeek)
{
字符串[]工作日=新字符串[7];
DateTime DateTime=DateTime.Now;
while(dateTime.DayOfWeek!=第一天OfWeek)
{
//查找下一个日期和每周的开始日期
dateTime=dateTime.AddDays(1);
}
对于(int i=0;i<7;i++)
{
//获取当天的星期几,添加1天,迭代7次。
weekdays[i]=dateTime.DayOfWeek.ToString();
dateTime=dateTime.AddDays(1);
}
返回工作日;
}
您可以使用枚举:

编辑:如果需要更改一周的开始日期:

private static string[] GetWeekdays(DayOfWeek firstDayOfWeek)
{
    string[] weekdays = new string[7];
    DateTime dateTime = DateTime.Now;
    while (dateTime.DayOfWeek != firstDayOfWeek)
    {
        // Find the next date with start day of week
        dateTime = dateTime.AddDays(1); 
    }
    for (int i = 0; i < 7; i++)
    {
        // Get day of week of current day, add 1 day, iterate 7 times.
        weekdays[i] = dateTime.DayOfWeek.ToString();
        dateTime = dateTime.AddDays(1);
    }
    return weekdays;
}
private静态字符串[]GetWeekdays(DayOfWeek firstDayOfWeek)
{
字符串[]工作日=新字符串[7];
DateTime DateTime=DateTime.Now;
while(dateTime.DayOfWeek!=第一天OfWeek)
{
//查找下一个日期和每周的开始日期
dateTime=dateTime.AddDays(1);
}
对于(int i=0;i<7;i++)
{
//获取当天的星期几,添加1天,迭代7次。
weekdays[i]=dateTime.DayOfWeek.ToString();
dateTime=dateTime.AddDays(1);
}
返回工作日;
}
string[]周\日=新字符串[7];
DayOfWeek day=DayOfWeek.Sunday;
对于(int i=0;i
使用DayOfWeek而不是指定DateTime属性。它轻松地解决了这个问题。

string[]week\u Days=新字符串[7];
DayOfWeek day=DayOfWeek.Sunday;
对于(int i=0;i

使用DayOfWeek而不是指定DateTime属性。它很容易解决问题。

您的代码失败是因为
日期时间。现在
并不总是在星期天:

DateTime days = DateTime.Now;  
最好使用现有的
DayOfWeek
enum:

 string[] weekdays = Enum.GetNames(typeof(DayOfWeek));

您的代码失败,因为
DateTime。现在
并不总是在星期天:

DateTime days = DateTime.Now;  
最好使用现有的
DayOfWeek
enum:

 string[] weekdays = Enum.GetNames(typeof(DayOfWeek));

您可以使用这个LINQ查询。唯一的挑战是获得正确的订单:

DayOfWeek firstWeekDay = DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;
string[] weekDays = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>()
   .OrderBy(dow => dow < firstWeekDay ? 7-(int)dow : dow-firstWeekDay)
   .Select(dow => dow.ToString())
   .ToArray();
DayOfWeek firstWeekDay=DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;
string[]weekDays=Enum.GetValues(typeof(DayOfWeek)).Cast()
.OrderBy(道琼斯指数=>道琼斯指数<第一个工作日-7-(国际)道琼斯指数:道琼斯指数第一个工作日)
.Select(dow=>dow.ToString())
.ToArray();

也许有人有一种比这个更优雅的方式,你可以使用这个LINQ查询。唯一的挑战是获得正确的订单:

DayOfWeek firstWeekDay = DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;
string[] weekDays = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>()
   .OrderBy(dow => dow < firstWeekDay ? 7-(int)dow : dow-firstWeekDay)
   .Select(dow => dow.ToString())
   .ToArray();
DayOfWeek firstWeekDay=DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;
string[]weekDays=Enum.GetValues(typeof(DayOfWeek)).Cast()
.OrderBy(道琼斯指数=>道琼斯指数<第一个工作日-7-(国际)道琼斯指数:道琼斯指数第一个工作日)
.Select(dow=>dow.ToString())
.ToArray();

也许有人有一种比这个更优雅的方式,OrderBy也可以这样做。在你得到“星期一”之前,在DateTime.Now上加上天

int j = 0;
string[] weekDays = new string[7];
DateTime days = DateTime.Now;

while (weekDays[0] != "Sunday")
{ 
    days = days.AddDays(j++);
    weekDays[0] = string.Format("{0:dddd}", days);
    if (weekDays[0] != "Sunday")
       days = DateTime.Now;  
}

for (int i = 0; i < weekDays.Length; i++)
{
    weekDays[i] = string.Format("{0:dddd}", days.AddDays(i));
    Console.WriteLine(weekDays[i]);   
}
intj=0;
字符串[]工作日=新字符串[7];
DateTime days=DateTime.Now;
while(平日[0]!=“周日”)
{ 
天=天。添加天(j++);
工作日[0]=string.Format(“{0:dddd}”,天);
如果(工作日[0]!=“周日”)
天=日期时间。现在;
}
for(int i=0;i
这也可以通过这种方式完成。在你得到“星期一”之前,在DateTime.Now上加上天

int j = 0;
string[] weekDays = new string[7];
DateTime days = DateTime.Now;

while (weekDays[0] != "Sunday")
{ 
    days = days.AddDays(j++);
    weekDays[0] = string.Format("{0:dddd}", days);
    if (weekDays[0] != "Sunday")
       days = DateTime.Now;  
}

for (int i = 0; i < weekDays.Length; i++)
{
    weekDays[i] = string.Format("{0:dddd}", days.AddDays(i));
    Console.WriteLine(weekDays[i]);   
}
intj=0;
字符串[]工作日=新字符串[7];
DateTime days=DateTime.Now;
while(平日[0]!=“周日”)
{ 
天=天。添加天(j++);
工作日[0]=string.Format(“{0:dddd}”,天);
如果(工作日[0]!=“周日”)
天=日期时间。现在;
}
for(int i=0;i
使用系统;
利用制度全球化;
静态void Main()
{
string[]weekDays=新的CultureInfo(“en-us”).DateTimeFormat.DayNames;
对于(inti=1;i
使用系统;
利用制度全球化;
静态void Main()
{
string[]weekDays=新的CultureInfo(“en-us”).DateTimeFormat.DayNames;


对于(int i=1;i
CultureInfo.CurrentCulture.DateTimeFormat.DayNames
?此代码的完整结果是什么?这不起作用,因为您从今天的DateTime开始可能与否重复。没有自动的方法。是使用DayOfWeek枚举。没有自动的方法从星期一开始。是的只是
new[]{DayOfWeek.Monday,DayOfWeek.周二,
etc等
CultureInfo.CurrentCulture.DateTimeFormat.DayNames
?这段代码的完整结果是什么?这不起作用,因为您从今天的DateTime开始可能重复No,没有自动方法。是的,使用DayOfWeek枚举。否,没有自动开始的方法星期一。是的,简单地
new[]{DayOfWeek.星期一,DayOfWeek.星期二,
等等都可以,但是如果我想将开始日设置为“星期一”?是的,可以,但是如果我想将开始日设置为“星期一”?如果我想将开始日设置为“星期一”?如果我想将开始日设置为“星期一”?怎么办?为什么不只是Enum.GetNames?@Adrian:因为OP想要正确的顺序,而不是从星期天开始。我假设正确的顺序是通过
DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek
定义的,对我来说是
Monday
。嗯,这取决于文化。有些文化是从星期一开始的