【发布时间】:2013-01-03 10:39:20
【问题描述】:
【问题讨论】:
【问题讨论】:
如果您使用的是 .Net 4.0 或更高版本,则可以在时间跨度上使用 ToString 方法和 hh 和 mm 说明符(但不确定它是否会显示 + 和 - 符号):
TimeSpan span = new TimeSpan(7, 0, 0);
Console.WriteLine(span.ToString("hhmm"));
如果没有,您可以只格式化 Hours 和 Minutes 属性以及一些条件格式以始终显示 + 和 - 符号:
TimeSpan span = new TimeSpan(7, 0, 0);
Console.WriteLine("{0:+00;-00}{1:00}", span.Hours, span.Minutes);
TimeSpan 格式字符串参考:http://msdn.microsoft.com/en-gb/library/ee372287.aspx
数字格式字符串及其条件格式的参考:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
【讨论】:
TimeSpan 为负数,则会显示类似-1-30 的结果。应该使用Math.Abs(span.Minutes)。
尝试类似:
var timespan = new TimeSpan(-5,0,0); // EST
var offset = String.Format("{0}{1:00}{2:00}",(timespan.Hours >= 0 ? "+" : String.Empty),timespan.Hours,timespan.Minutes);
当数字为非负数时,我添加 +(对于负数,应输出 -)。
【讨论】:
我认为你可以使用这个:
String.Format("{0:zzz}", ts);
【讨论】:
这段代码:
var timeSpan = new TimeSpan(2, 30, 0);
Console.WriteLine(new DateTimeOffset(2000, 1, 1, 1, 1, 1, timeSpan).ToString("zzz"));
Console.WriteLine(new DateTimeOffset(2000, 1, 1, 1, 1, 1, -timeSpan).ToString("zzz"));
输出:
+02:30
-02:30
【讨论】: