删除包含c#中日期的变量中的字符串部分

时间:2018-04-20 06:15:31

标签: c# datetime

我有一个包含"02/04/2018 to 08/04/2018"值的字符串变量。

string dateRange = "02/04/2018 to 08/04/2018";

我在c#中有一个函数,其中所有日期都在02/04/2018 to 08/04/2018范围内,如下所示。

public string getDateRange(string dateRange) {
    var selectedDates = new List<DateTime?>();

    for (var date = Convert.ToDateTime("02/04/2018");
         date <= Convert.ToDateTime("08/04/2018");
         date = date.AddDays(1)) {
            selectedDates.Add(date);
        }
    foreach (var date in selectedDates) {
        Console.WriteLine(date);
    }

    return selectedDates;
}

我希望在此方法中实现的目的是删除日期范围中的单词to,并分别传递开始日期和结束日期。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

您可以使用reduce分隔日期:

String.Split()

该方法返回一个包含第一个(public string[] separateDates(string dateRange) { string[] dateSplit = dateRange.Split(new string[] { "to" }, StringSplitOptions.RemoveEmptyEntries); return new string[]{dateSplit[0].Trim(), dateSplit[1].Trim()}; } )和第二个日期("02/04/2018")的字符串数组:

"08/04/2018"

修改

我已经实现了将日期分隔到方法中的方法:

static void Main()
{
     string dateRange = "02/04/2018 to 08/04/2018";
     string[] myDates = separateDates(dateRange);
     string firstDate = myDates[0];//"02/04/2018"
     string secondDate = myDates[1];//"08/04/2018" 
}

该方法现在返回public List<DateTime?> getDateRange(string dateRange) { var selectedDates = new List<DateTime?>(); string[] dateSplit = dateRange.Split(new string[] { "to" }, StringSplitOptions.RemoveEmptyEntries); for (var date = Convert.ToDateTime(dateSplit[0].Trim()); date <= Convert.ToDateTime(dateSplit[1].Trim()); date = date.AddDays(1)) { selectedDates.Add(date); } foreach (var date in selectedDates) { Console.WriteLine(date.Value.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); } return selectedDates; } 而非List<DateTime?>,因为string的类型为selectedDates。我还对控制台输出进行了修改,现在日期以下列格式List<DateTime?>打印到控制台(例如dd/MM/yyyy)。

答案 1 :(得分:1)

LastIndexOf:此方法从右侧搜索字符串。它找到最后一个字母或子字符串的位置。它是IndexOf的反转版本。

public static void Main(string[] args)
 {
   string str = "02/04/2018 to 08/04/2018";
   int pos = str.LastIndexOf("to");
   string result = str.Substring(0, pos) + "  " + str.Substring(pos + 2);
   Console.WriteLine(result);
}

Fiddle

其打印日期为:02.04.2018 00:00:00。我已将字符串指定为dd / MM / yyyy。它只是删除00:00:00,但保持点之间。

以下是修正案的小修正案:

 Console.WriteLine(date.Value.ToString("dd/MM/yyyy"));