Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 从给定的天数组中获取下一天_C#_Asp.net_Datetime - Fatal编程技术网

C# 从给定的天数组中获取下一天

C# 从给定的天数组中获取下一天,c#,asp.net,datetime,C#,Asp.net,Datetime,我有一系列的日子,必须通过比较今天来选择下一个即将到来的日子, 这是我的代码片段- private string GetUpcomingDeliveryDay(string today, ModelSetting ObjModelSetting) { //string today = DateTime.Now.DayOfWeek.ToString(); //Tuesday // daysOfDeliveries = ("Monday","Friday") string[]

我有一系列的日子,必须通过比较今天来选择下一个即将到来的日子, 这是我的代码片段-

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;
}
例如,如果今天是星期一,并且它存在于数组中,那么它应该返回星期一,否则将是该数组中最近的一天

我以前从未在“日期”部分工作过,所以这对我来说越来越难了。 谢谢大家!

如果您有DaysOfWeek格式的DaysofDelivery,那么就很容易了。因此,如果它是字符串格式,首先需要将其转换为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中的字符串符合枚举名称。

如果daysOfDeliveries的格式为DaysOfWeek,那么就很容易了。因此,如果它是字符串格式,首先需要将其转换为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中的字符串符合枚举名称。

您可以尝试以下操作:

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;
}

您可以尝试以下方法:

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;
}