将TimeSpan格式化为时区偏移量

时间:2013-01-20 00:54:58

标签: c# timezone timespan

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

+0700

-0600

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

4 个答案:

答案 0 :(得分:3)

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

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

如果没有,您可以将HoursMinutes属性以及一些条件格式设置为格式,以便始终显示+和 - 符号:

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

答案 1 :(得分:2)

尝试类似:

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

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

答案 2 :(得分:0)

我想你可以用这个:

String.Format("{0:zzz}", ts);

答案 3 :(得分: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