繁体   English   中英

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

[英]Remove string part in a variable containing date in c#

我有一个字符串变量,其值为"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 ,并分别传递开始日期和结束日期。 有人可以帮忙吗?

您可以使用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 (例如02/04/2018 )打印到控制台。

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

小提琴

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

这是修正的小修正:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM