我确信这一定很简单,但我无法弄清楚如何在Google中正确地说出来......
我有一个包含字段的配置:
TimeToPoll="1d"
现在我想做一些喜欢:
TimeSpan.Parse(TimeToPoll);
返回一天的时间。
在C#中
编辑: 我正在寻找一种方法,它允许解析“1d”以及“1s”或“1y”等。这可能吗?
意义:
"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}
答案 0 :(得分:4)
这是我的决议:
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));
}
}
答案 1 :(得分:0)
不需要d
,这是您的解析失败的原因。
var oneDay = TimeSpan.Parse("1");
更新
对于您要做的事情,没有内置的支持。您需要编写自己的解析器。
答案 2 :(得分:0)
您应该以TimeSpan.Parse可以使用的格式之一将值存储在配置文件中。该页面上有几个样本。
编辑:示例位于页面底部的代码中。