Получение следующего предстоящего дня из данного массива дней, сравниваемого с текущим C # - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть массив дней, я должен выбрать следующий предстоящий день, сравнив сегодня, вот мой фрагмент кода-

private string GetUpcomingDeliveryDay(string today, ModelSetting ObjModelSetting)
{
    //string today = DateTime.Now.DayOfWeek.ToString(); //Tuesday
    // daysOfDeliveries = ("Monday","Friday")
    string[] daysOfDeliveries = Convert.ToString(ObjModelSetting.DeliveryDays).Split(',');
    string nextDelivery = string.Empty;

    return nextDelivery;
}

ех. если сегодня понедельник, и он присутствует в массиве, то он должен вернуть понедельник, или следующий ближайший день из этого массива.

Я никогда раньше не работал над разделами дней и дат, поэтому мне становится все труднее. спасибо!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете попробовать что-то вроде этого:

private static string GetUpcomingDeliveryDay(string today, string[] days) 
{
    if (days.Length == 0)
    {
        return string.Empty;    
    }

    if (days.Any(x => x == today.ToString())) 
    {
        return today;   
    }

    var day = string.Empty;
    var allDays = Enum.GetValues(typeof(DayOfWeek));
    var i = Array.IndexOf(allDays, Enum.Parse(typeof(DayOfWeek), today));

    while (string.IsNullOrEmpty(day))
    {
        i++;

        if (i >= allDays.Length) 
        {
            i = 0;  
        }

        if (days.Any(x => x == allDays.GetValue(i).ToString()))
        {
            day = allDays.GetValue(i).ToString();
        }
    }

    return day;
}
0 голосов
/ 13 ноября 2018

Если у вас есть daysOfDeliveries в формате DaysOfWeek, это будет легко.Так что если он сначала в формате string, вам необходимо преобразовать его в Enum.DaysOfWeek.Остальное будет простым сравнением:

var days = daysOfDeliveries.Select(x => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), x)).ToArray();
DayOfWeek today = DateTime.Now.DayOfWeek;
var nextDelivery = days.Where(x => x >= today).FirstOrDefault();

, пожалуйста, убедитесь, что строки в daysOfDeliveries соответствуют именам Enum.

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