【发布时间】:2021-09-02 13:33:53
【问题描述】:
如何将字符串 "0, 0, 0, 5, 0" (d, h, m, s, f) 发送到 TimeSpan 以便它可以解析它?
输入字符串应完全采用这种格式。
应该是这样的:
TimeSpan ts;
var tmp = TimeSpan.TryParseExact("1, 2, 3, 4, 5", "dd, hh, mm, ss, ff", null, out ts);
// fails, tmp = false, ts = 0:00:00:00
我不能使用FromSecond、FromMinutes 等,因为它可以是"0, 15, 0, 0, 0" 或"1, 0, 0, 0, 0"
我可以这样做:
var data = ApplicationConfiguration.Instance
.GetAppConfigValue("SavingRewardConfigurationCachingPeriod") ?? "0, 0, 0, 5, 0";
var tmp0 = new TimeSpan(
data [0],
data [1],
data [2],
data [3],
data [4]);
但我想找到一个更好的方法来做到这一点。
【问题讨论】:
-
你的问题中有一段代码,但你忘了说为什么它不适合你
-
@dmytro.kozyr 你的意思是
TryParse返回flase因为格式不匹配。 -
我使用了格式字符串文字
@"d\,\ h\,\ m\,\ s\,\ f" -
@Wyck 谢谢,成功了
-
@AhmadIbrahim 双字母格式化程序需要零填充,而单字母不需要,但它们可以处理多于一位的值。