C#中的utcoffset格式

问题描述

{{1}}

上面的代码工作正常。但是我需要显示偏移量,例如+05:00。有什么办法可以实现这种格式?

解决方法

来自docs

自定义TimeSpan格式说明符不包含占位符分隔符,例如将天与小时,小时与分钟或秒与小数秒分隔的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。

因此,您必须使用上一行'或反斜杠来对上一页中未列出的格式字符串中的字符进行转义,所以:

utcOffset.ToString("hh':'mm")

但是,如果您格式化DateTimeOffset而不是TimeSpan,则实际上不必格式化自己。如果这样做,您也不需要所有的“获取UTC偏移”混乱。

您只需要zzz Custom Format Specifier

DateTimeOffset.Now.ToString("zzz")

您不需要所有TimeZone的东西。

,

您可以使用TimeZoneDateTime.Now格式字符串以及DateTimeOffset.Now来实现此目的,而不用使用zzzCultureInfo.InvariantCulture中查找时区:

Console.WriteLine(DateTimeOffset.Now.ToString("HHmmzzz",System.Globalization.CultureInfo.InvariantCulture));
// outputs 1255+02:00

Try it online

如果只希望使用该格式的偏移量,则可以使用"zzz"代替"HHmmzzzz"