DateTime tidak mengetahui perbedaan zona waktunya. Tidak ada metode bawaan untuk mengembalikan offset atau nama zona waktu (mis. EAT, CEST, EST, dll).
Seperti yang disarankan oleh orang lain, Anda dapat mengubah tanggal Anda menjadi UTC:
DateTime localtime = new DateTime.Now;
var utctime = localtime.ToUniversalTime();
dan kemudian hanya menghitung perbedaannya:
TimeSpan difference = localtime - utctime;
Anda juga dapat mengonversi satu waktu ke waktu lainnya dengan menggunakan DateTimeOffset:
DateTimeOffset targetTime = DateTimeOffset.Now.ToOffset(new TimeSpan(5, 30, 0));
Tapi ini semacam kompresi lossy - offset saja tidak dapat memberi tahu Anda zona waktunya karena dua negara yang berbeda mungkin berada dalam zona waktu yang berbeda dan memiliki waktu yang sama hanya untuk sebagian tahun (mis. Afrika Selatan dan Eropa). Selain itu, ketahuilah bahwa waktu musim panas mungkin berlaku pada tanggal yang berbeda (EST vs CET - perbedaan 3 minggu).
Anda bisa mendapatkan nama zona waktu sistem lokal Anda menggunakan kelas TimeZoneInfo:
TimeZoneInfo localZone = TimeZoneInfo.Local;
localZone.IsDaylightSavingTime(localtime) ? localZone.DaylightName : localZone.StandardName
Saya setuju dengan Gerrie Schenck, silakan baca artikel yang dia sarankan.