【问题标题】:Use Regex.Replace to format TimeSpan Components使用 Regex.Replace 格式化 TimeSpan 组件
【发布时间】:2013-06-10 11:33:04
【问题描述】:

我正在使用 .net 3.5,我想了解是否可以使用 Regex.Replace 为用户提供的格式格式化 TimeSpan 组件。理想情况下,用户可以发送几种类型的所需格式作为参数 - 例如HH:mm、hh:mm、dd:hh:mm、mm:ss 等等。 replace 函数将询问用户格式并以所需格式返回 TimeSpan 值。

我做了一些挖掘,并提出了以下内容。这不是一个解决方案,但会让您了解我想要实现的目标。

  // Sample Replace Pattern for TimeSpan
            string pattern = @"(?<dd>\d{2}).(?<hh>\d{2}).(?<mm>\d{2})";
            string replaceStr = @"{dd:hh:mm}";
            var myRegEx = new Regex(pattern);
            TimeSpan ts = new TimeSpan(3, 10,3, 22);
            string dateResult = myRegEx.Replace(ts.ToString(), replaceStr);

谢谢 - 格伦

【问题讨论】:

  • 你无法区分 hh:mm 和 mm:ss,例如:10:45
  • Casimir - 目标是传递所需的任何格式。如果用户想要的 mm:ss 或 MM:ss,应该可以解决。格伦

标签: c# regex converter timespan


【解决方案1】:

您可以使用 TimeSpan 的 ToString 方法如下,如果我理解正确,您不需要正则表达式

 string dateResult = ts.ToString(@"dd\:hh\:mm");

如果您有多种格式,则如下所示

HH:mm, hh:mm, dd:hh:mm, mm:ss 

然后将输入 : 替换为 \: 并将 @ 添加到开头

您现在可以使用此格式字符串来调用 TimeSpan 的 ToString 方法

【讨论】:

  • 感谢 Damith - 不幸的是,我使用的是 .Net 3.5,它不包含相当不错的扩展方法。格伦
  • 它在那里,但只返回原始字符串。仔细看。在文档中,他们有一个自定义方法将字符串格式化为看起来像日期时间格式的东西。在 4 或 4.5 中,您可以传递所需的格式并以该格式返回跨度。在 3.5 Glenn 中并非如此
猜你喜欢
  • 1970-01-01
  • 2013-04-04
  • 2023-03-12
  • 2019-10-23
  • 2016-07-04
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多