无法用逗号分隔解析 TimeSpan

Can't Parse TimeSpan with commas for separation

如何将字符串 "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

我不能使用FromSecondFromMinutes等,因为它可以是"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]);

但我想找到更好的方法。

您只需要转义字符串的 , 部分 (as the documentation states),这是通过用单引号将它们括起来来实现的 ('):

var tmp = TimeSpan.TryParseExact("1, 2, 3, 4, 5", "d', 'h', 'm', 's', 'f", null, out ts);

示例 fiddle:https://dotnetfiddle.net/M7GOWR