我有一个包含"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
,并分别传递开始日期和结束日期。有人可以帮忙吗?
答案 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);
}
其打印日期为:02.04.2018 00:00:00。我已将字符串指定为dd / MM / yyyy。它只是删除00:00:00,但保持点之间。
以下是修正案的小修正案:
Console.WriteLine(date.Value.ToString("dd/MM/yyyy"));