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