我正在尝试制作一个方法,用于转换用户输入的DateTime
格式。来自用户的条目的示例可以是2Y 4M 3D
等。
我需要将此条目转换为2年,4个月和3天的持续时间,如秒。
答案 0 :(得分:0)
获得总秒数。请尝试以下方法。
var testString = "2Y 4M 3D";
var splitString = testString.Split(' ');
var year = int.Parse(splitString[0][0].ToString(CultureInfo.InvariantCulture));
var month = int.Parse(splitString[1][0].ToString(CultureInfo.InvariantCulture));
var day = int.Parse(splitString[2][0].ToString(CultureInfo.InvariantCulture));
var totalSeconds = (DateTime.Now.AddYears(year).AddMonths(month).AddDays(day) - DateTime.Now).TotalSeconds;
答案 1 :(得分:0)
如果我理解正确,你可以试试这个:
var sample = "2Y 4M 3D";
var split = sample.Split(' ');
DateTime prevDate, nextDate, now;
prevDate = nextDate = now = DateTime.Now;
foreach (var sp in split)
{
var d = Regex.Match(sp, @"\d+").Value;
var t = Regex.Match(sp, @"[A-Z]+").Value;
switch(t)
{
case "Y":
{
prevDate = prevDate.AddYears(-int.Parse(d));
nextDate = nextDate.AddYears(int.Parse(d));
break;
}
case "M":
{
prevDate = prevDate.AddMonths(-int.Parse(d));
nextDate = nextDate.AddMonths(int.Parse(d));
break;
}
case "D":
{
prevDate = prevDate.AddDays(-int.Parse(d));
nextDate = nextDate.AddDays(int.Parse(d));
break;
}
}
}
var timeSpanPrev = now - prevDate;
var timeSpanNext = nextDate - now;