0

可能重复:
如何获取下个月每一天的名称?

我需要在 currentMonth 从 DayNames 创建一个数组

DateTime dt = new DateTime();
dt = DateTime.Now;
string[] days = ( names of days);  // this month should be: Sunday, Monday...

我该怎么做,请

4

8 回答 8

3

获取当月所有日期名称的 LINQ 方式,以“Sunday”开头(en-us 中的 fe):

var now = DateTime.Now;
var culture = System.Globalization.CultureInfo.CurrentCulture;
String[] thisMonthDays = 
     Enumerable.Range(1, culture.Calendar.GetDaysInMonth(now.Year, now.Month))
               .Select(day => new DateTime(now.Year, now.Month, day))
               .Select(date => culture.DateTimeFormat.GetDayName(date.DayOfWeek))
               .ToArray();

(因为我来自德国,所以列表以“Sonntag”开头)

于 2012-07-02T08:46:52.927 回答
2

您好,您可以查找 DayOfWeek 枚举http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx

var arr = Enum.GetValues(typeof(DayOfWeek));
于 2012-07-02T08:36:10.877 回答
2

你可以做:

DateTime dt = DateTime.Now;
DateTime end_DateTime = 
        new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));

List<string> result = new List<string>();

for (DateTime dt1 = new DateTime(dt.Year, dt.Month, 1); 
     dt1 <= end_DateTime; dt1 = dt1.AddDays(1))
{
    result.Add(dt1.DayOfWeek.ToString());
}

到底

string[] resultarr = result.ToArray();

这会给你

"Sunday", "Monday", "Tuesday" .... and so on for current month of July.

因为01/07/2012 (dd/MM/yyyy)是星期天等等。

于 2012-07-02T08:39:55.707 回答
2
    DateTime Base = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(1).Month, 1);

    int x = DateTime.DaysInMonth(Base.Year, Base.Month);
    string[] daysOfMonth = new string[x];
    int i = 0;
    while (Base.Day != x)
    {
        daysOfMonth[i++] = Base.DayOfWeek.ToString();
        Base = Base.AddDays(1);
    }

从您之前的问题:如何获取下个月每一天的名称?

于 2012-07-02T08:45:13.250 回答
1

我认为你可以这样做

  DateTime dt = new DateTime();
            dt = DateTime.Now;
            string[] days1 = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };  // this month should be: Sunday, Monday...

希望对你有帮助 :-)

于 2012-07-02T08:40:08.050 回答
1

试试这个:

DateTime dt = new DateTime(year, month,...); // initialize to first day in month
List<string> days = new List<string>();
do 
{
   days.Add(dt.ToString("dddd"));
   dt.AddDays(1);
} while (dt.Month == month);
于 2012-07-02T08:43:50.370 回答
1

从你的最后一个帖子

DateTime Base = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(1).Month, 1);
List<String> Days = new List<String>();
int x = DateTime.DaysInMonth(Base.Year, Base.Month);
while (Base.Day != x)
{
    Days.Add(Base.DayOfWeek.ToString());
    Base = Base.AddDays(1);
}

然后使用

String[] StringArray = Days.ToArray();

如果您需要字符串数组而不是列表。

除非您真的需要一个数组,否则我只会保留列表原样,它可以以相同的方式使用,所以我看不出有充分的理由不必要地进行数组复制。

或者你可以这样做(正如 Habib.OSU 建议的那样):

DateTime Base = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(1).Month, 1);

int x = DateTime.DaysInMonth(Base.Year, Base.Month);
String[] StringArray = new String[x];
while (Base.Day != x)
{
    daysOfMonth[Base.Day - 1] = Base.DayOfWeek.ToString();
    Base = Base.AddDays(1);
}

这很可能是两者中较快的一个。

于 2012-07-02T08:45:54.160 回答
0

星期几总是相同的,您不需要将它们与当前月份联系起来。

如果您只关心用英语成为他们。

string[] weekdays = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Saturday" };

如果您想要一个月中所有日子的列表,请参阅此线程

于 2012-07-02T08:38:53.270 回答