Получить дни недели с указанием названия дня - PullRequest
0 голосов
/ 27 марта 2020
        public class Date
        {
        public int mm;
        public int dd;

        public Date(int get_mm, int get_dd)
        {
            mm = get_mm;
            dd = get_dd;
        }            

        int day = (int)(daysofweek)Enum.Parse(typeof(daysofweek), DateTime.Now.DayOfWeek.ToString());
        for (int i = 1; i < 8; i++)
        {
        int day_fetch = i - day;
        Console.WriteLine(Date date = new Date(DateTime.Now.Month, DateTime.Now.Day + day_fetch));
        }

Я сделал это, но это, кажется, не работает хорошо. Что я могу сделать, чтобы заставить его работать, и как я могу решить эту проблему, если дата, например, 30 марта (первые 2 дня - март, но остальные в апреле)

1 Ответ

0 голосов
/ 27 марта 2020

Попробуйте это

// 30 March
var dateTime = DateTime.Now.AddDays(3);
var dayOfWeek = dateTime.DayOfWeek;

// Figure out the first day on the calendar
CultureInfo ci = CultureInfo.CurrentCulture;
Calendar calendar = ci.Calendar;
var firstDayOfWeek = ci.DateTimeFormat.FirstDayOfWeek;

// date (in this case Now) is exlcusive
var daysToBeginningOfWeek = dayOfWeek - firstDayOfWeek;

// Days from beginning of the week to date
for (var i = daysToBeginningOfWeek; i >= 0; i--)
{
    var dt = dateTime.AddDays(-i);
    Date date = new Date(dt.Month, dt.Day);
    Console.WriteLine(date);
}

// Days after date to end of the week
var daysToEndOfWeek = 7 - daysToBeginningOfWeek - 1;
for (var i = 1; i <= daysToEndOfWeek; i++)
{
    var dt = dateTime.AddDays(i);
    Date date = new Date(dt.Month, dt.Day);
    Console.WriteLine(date);
}

Вам также необходимо принять во внимание первый день недели, потому что не все календари с воскресенья по субботу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...