3

如何将TimeSpan对象格式化为时区偏移,如下所示:

+0700

或者

-0600

我正在使用GetUtcOffset来获取偏移量及其工作,但它返回一个 TimeSpan 对象。

4

4 回答 4

4

如果您使用的是 .Net 4.0 或更高版本,则可以ToString在时间跨度上使用带有hhandmm说明符的方法(但不确定它是否会显示 + 和 - 符号):

TimeSpan span = new TimeSpan(7, 0, 0);
Console.WriteLine(span.ToString("hhmm"));

如果没有,您可以将HoursandMinutes属性与一些条件格式一起格式化,以始终显示 + 和 - 符号:

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

于 2013-01-20T01:15:12.813 回答
3

尝试类似:

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);

当数字为非负数时,我添加 +(对于负数,应输出 - )。

于 2013-01-20T01:01:03.210 回答
0

我认为你可以使用这个:

String.Format("{0:zzz}", ts);
于 2013-01-20T01:01:17.470 回答
0

这段代码:

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
于 2020-10-13T07:30:55.720 回答