DateTime格式用户条目

时间:2015-05-27 07:49:12

标签: c#

我正在尝试制作一个方法,用于转换用户输入的DateTime格式。来自用户的条目的示例可以是2Y 4M 3D等。 我需要将此条目转换为2年,4个月和3天的持续时间,如秒。

2 个答案:

答案 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;

Heres a Demo

答案 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;