DateTime, saat dilimi farkını bilmiyor. Farkı veya saat dilimi adını döndürmek için yerleşik bir yöntem yoktur (örn. EAT, CEST, EST vb.).
Başkalarının önerdiği gibi, tarihinizi UTC'ye dönüştürebilirsiniz:
DateTime localtime = new DateTime.Now;
var utctime = localtime.ToUniversalTime();
ve sonra yalnızca farkı hesaplayın:
TimeSpan difference = localtime - utctime;
Ayrıca DateTimeOffset'i kullanarak bir zamanı diğerine dönüştürebilirsiniz:
DateTimeOffset targetTime = DateTimeOffset.Now.ToOffset(new TimeSpan(5, 30, 0));
Ancak bu, kayıplı bir sıkıştırma türüdür - iki farklı ülke farklı zaman dilimlerinde olabileceğinden ve yalnızca yılın bir bölümünde (örneğin Güney Afrika ve Avrupa) aynı saate sahip olabileceğinden, tek başına dengeleme size hangi saat diliminde olduğunu söyleyemez. Ayrıca, yaz gün ışığından yararlanma saatinin farklı tarihlerde uygulanabileceğini unutmayın (EST - CET - 3 haftalık fark).
TimeZoneInfo sınıfını kullanarak yerel sistem saat diliminizin adını alabilirsiniz:
TimeZoneInfo localZone = TimeZoneInfo.Local;
localZone.IsDaylightSavingTime(localtime) ? localZone.DaylightName : localZone.StandardName
Gerrie Schenck'e katılıyorum, lütfen önerdiği makaleyi okuyun.