[英]Get timezone offset and display C#
我需要獲取我的程序正在運行的計算機的當前時區偏移量,並將其顯示在文本框或標簽中。
這是我的代碼
var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);
您發布的獲取偏移量的代碼是正確的:
var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);
同樣有效的是:
var offset = DateTimeOffset.Now.Offset;
這些結果之一就是當前的本地偏移量,表示為TimeSpan
。 您唯一缺少的部分是如何將其格式化為顯示string
。 盡管有多個選項,但我建議使用諸如"+05:30"
或"-08:00"
。
string sign = offset < TimeSpan.Zero ? "-" : "+";
string output = sign + offset.ToString(@"hh\:mm");
然后,您可以將output
字符串分配給標簽值。
只是為了好玩,如果您想探索如何使用Noda Time來完成相同的任務,可以編寫以下代碼:
Instant now = SystemClock.Instance.Now;
DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();
ZonedDateTime local = now.InZone(tz);
Offset offset = local.Offset;
string output = offset.ToString("m", CultureInfo.InvariantCulture);
YourTextBoxName.Text = offset.TotalHours.ToString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.