C# C语言中的Utcoffset格式# var utcOffset=TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now); Console.WriteLine(((utcOffset
上面的代码运行良好。但是我需要显示偏移量,比如+05:00。有没有办法实现这种格式?而不是使用C# C语言中的Utcoffset格式# var utcOffset=TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now); Console.WriteLine(((utcOffset,c#,asp.net-mvc,datetime-format,C#,Asp.net Mvc,Datetime Format,上面的代码运行良好。但是我需要显示偏移量,比如+05:00。有没有办法实现这种格式?而不是使用时区从日期时间查找时区。现在,您可以使用日期时间偏移量。现在使用zzz格式字符串和CultureInfo.InvariantCulture来实现这一点: var utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now); Console.WriteLine(((utcOffset < TimeSpan.Zero) ? "
时区
从日期时间查找时区。现在
,您可以使用日期时间偏移量。现在
使用zzz
格式字符串和CultureInfo.InvariantCulture
来实现这一点:
var utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
Console.WriteLine(((utcOffset < TimeSpan.Zero) ? "-" : "+") + utcOffset.ToString("hhmm"));
如果您只需要该格式的偏移量,可以使用“zzz”
而不是“HHmmzzzz”
从以下位置:
自定义TimeSpan格式说明符不包括占位符分隔符符号,例如将天与小时、小时与分钟或秒与分数秒分隔的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中
因此,您必须用“
”或反斜杠来转义上一页中未列出的格式字符串中的字符,以便:
Console.WriteLine(DateTimeOffset.Now.ToString("HHmmzzz", System.Globalization.CultureInfo.InvariantCulture));
// outputs 1255+02:00
但是,如果您格式化的是DateTimeOffset
,而不是TimeSpan
,您实际上不必自己进行格式化。如果您这样做,您也不需要所有的“获取UTC偏移”混乱
您只需要:
您不需要所有的
时区
内容。只需使用hh':'mm
作为格式字符串?另外,使用TimeZoneInfo
而不是TimeZone
。比如,utcOffset.ToString(“hh:mm”);再读一遍我的评论。我没有说hh:mm
。比如Console.WriteLine(((utcOffset.BaseUtcOffsetutcOffset.ToString(“hh':'mm”)代码>…您能澄清一下您的答案吗?我得到的输出和你的不一样。它说输入字符串的格式不正确。谢谢。对不起,我错过了一个。现在。你能再试一次吗?
utcOffset.ToString("hh':'mm")
DateTimeOffset.Now.ToString("zzz")