【问题标题】:Dynamic timespan format string动态时间跨度格式字符串
【发布时间】:2014-05-03 10:35:23
【问题描述】:

我想动态设置我的TimeSpan 格式字符串。这意味着如果时间跨度值为负,格式字符串应该与正值不同。当我想设置格式字符串时,我不知道TimeSpan的值!

例如:我希望负时间跨度为 -03:01:01,正值时间跨度为 003:01:01

代码是

columns.Add(new TimeSpanColumnInfo(col.PropertyName, col.TitlePersian, col.TitleEnglish, "ddd\\:hh\\:mm"));

女巫第三个参数是格式字符串

【问题讨论】:

  • 不,不知道你想做什么。您尝试过的示例输入和输出以及示例代码需要。
  • @AntP 还需要更多示例吗?
  • 您还没有发布您尝试过的代码。 stackoverflow.com/help/how-to-ask
  • 好的,现在我看到您共享了一行代码,其中您将一些未知对象添加到一些未知集合中 - 这应该如何帮助任何人回答这个问题?您需要分享足够的信息以使问题具有可回答性。如果您希望人们为答案付出努力,请在问题上付出一些努力。

标签: c# timespan format-string


【解决方案1】:

您的问题仍然不清楚,但如果您有一个名为 tTimeSpan 对象,您可以通过执行以下操作有条件地选择格式字符串:

string format = t < TimeSpan.Zero ? @"\-dd\:hh\:mm" : @"ddd\:hh\:mm";

如果您确实需要在知道t 的值之前指定格式(有问题),那么您可以更改您的方法签名以接受Func&lt;TimeSpan, string&gt; 并将以下内容作为参数传递:

o => o < TimeSpan.Zero ? @"\-dd\:hh\:mm" : @"ddd\:hh\:mm"

More info on Func&lt;T, TResult&gt;.

【讨论】:

  • 问题是当我想设置字符串格式时我没有 t 的值!
  • +1 用于传递格式化函数的选项。这是个好建议。
【解决方案2】:

听起来您正在寻找类似the section separator 的东西。

string s = someNumber.ToString("00;(00)");

在上面的例子中,正值输出两位数,负值输出两位数用括号括起来。

很遗憾,部分分隔符仅对自定义 numeric 格式有效。 custom timespan formats 不包含节分隔符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多