从包括格式的字符串解析TimeSpan

Mat*_*nty 5 .net c# parsing timespan

我敢肯定这一定很简单,但我无法弄清楚如何在Google中正确地说出来......

我有一个包含字段的配置:

TimeToPoll="1d"
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的事:

TimeSpan.Parse(TimeToPoll);
Run Code Online (Sandbox Code Playgroud)

返回一天的时间跨度.

在C#中

编辑:我在寻找它允许解析"一维"以及"1"或"一年"等等.这是可能的方法是什么?

含义:

     "1d" parses to {1.00:00:00}
     "1h" parses to {0.01:00:00}
     "1m" parses to {0.00:01:00}
     "1s" parses to {0.00:00:01}
Run Code Online (Sandbox Code Playgroud)

Mat*_*nty 5

这是我的决心:

    public static TimeSpan ConvertToTimeSpan(this string timeSpan)
    {
        var l = timeSpan.Length - 1;
        var value = timeSpan.Substring(0, l);
        var type = timeSpan.Substring(l, 1);

        switch (type)
        {
            case "d": return TimeSpan.FromDays(double.Parse(value));
            case "h": return TimeSpan.FromHours(double.Parse(value));
            case "m": return TimeSpan.FromMinutes(double.Parse(value));
            case "s": return TimeSpan.FromSeconds(double.Parse(value));
            case "f": return TimeSpan.FromMilliseconds(double.Parse(value));
            case "z": return TimeSpan.FromTicks(long.Parse(value));
            default: return TimeSpan.FromDays(double.Parse(value));
        }
    }
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 0

d不需要,这就是解析失败的原因。

var oneDay = TimeSpan.Parse("1");
Run Code Online (Sandbox Code Playgroud)

更新:

对于您想要做的事情,没有内置支持。您需要编写自己的解析器。