【问题标题】:Can't Parse TimeSpan with commas for separation无法用逗号解析 TimeSpan 以进行分隔
【发布时间】: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

我不能使用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]);

但我想找到一个更好的方法来做到这一点。

【问题讨论】:

  • 你的问题中有一段代码,但你忘了说为什么它不适合你
  • @dmytro.kozyr 你的意思是 TryParse 返回 flase 因为格式不匹配。
  • 我使用了格式字符串文字@"d\,\ h\,\ m\,\ s\,\ f"
  • @Wyck 谢谢,成功了
  • @AhmadIbrahim 双字母格式化程序需要零填充,而单字母不需要,但它们可以处理多于一位的值。

标签: c# .net timespan


【解决方案1】:

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

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

小提琴示例:https://dotnetfiddle.net/M7GOWR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 2017-08-29
    • 1970-01-01
    • 2021-11-29
    • 2012-11-23
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多