获取格式化字符串以表示UTC偏移的最佳方法是什么?

Mik*_*ike 11 c# formatting timezone datetime

我需要格式化这样的日期:20110202192008-0500.下面的代码可以解决问题,但我想知道在c#3.5中是否有更好/更清晰的方法来做到这一点.谢谢!!

  var date = DateTime.Now;
  var strDate = TimeZoneInfo.ConvertTimeToUtc(date).ToString("yyyyMMddHHmmss");
  var offsetHours = TimeZoneInfo.Local.GetUtcOffset(date).Hours.ToString("00");
  var offsetMinutes = TimeZoneInfo.Local.GetUtcOffset(date).Minutes.ToString("00");
  Console.Write(string.Concat(strDate, offsetHours, offsetMinutes));
Run Code Online (Sandbox Code Playgroud)

SwD*_*n81 10

这个怎么样:

.NET 4

 var utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
 Console.WriteLine(DateTime.UtcNow.ToString("yyyyMMddHHmmss") + ((utcOffset < TimeSpan.Zero) ? "-" : "+") + utcOffset.ToString("hhmm"));
Run Code Online (Sandbox Code Playgroud)

.NET 3.5

 var utcAlmostFormat = DateTime.UtcNow.ToString("yyyyMMddHHmmss") + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
 var utcFormat = System.Text.RegularExpressions.Regex.Replace(utcAlmostFormat, @"(\d\d):(\d\d):(\d\d)",@"$1$2");
 Console.WriteLine(utcFormat);
Run Code Online (Sandbox Code Playgroud)

去钢人(来自拉斯维加斯大道上的一个人)