簡體   English   中英

在C#上獲取PC TimeZone

[英]Get PC TimeZone on C#

我目前正在開發ASP-C#作為后端代碼。 我想獲取在PC上設置的當前時區。

即使我已經將PC時區設置更改為另一個時區,下面的代碼仍在標識當前區域(+ 8GMT)的正確時區。

我想要的是獲取PC日期設置上指定的時區偏移量。 誰可以幫我這個事。 下面是到目前為止的代碼。

public TimeSpan currentOffset;
public DateTime utc;
public DateTime local;

this.utc = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Utc.Id);
this.local = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id);
this.currentOffset = this.local.Subtract(this.utc);

除了David Haney的答案。

TimeZoneInfo會在首次調用后緩存數據,因此PC設置中的任何更改都不會影響您的應用程序(如果已運行)。 您應該調用method

 TimeZoneInfo.ClearCachedData();

刷新此緩存。 因此,這將適合您的情況:

 TimeZoneInfo.ClearCachedData();
 var offsetTimespan = DateTimeOffset.Now.Offset;
 var offsetInHours = offsetTimespan.TotalHours;

您正在使生活變得更加艱難。 :)

使用DateTimeOffsethttp : //msdn.microsoft.com/zh-cn/library/system.datetimeoffset.now%28v=vs.110%29.aspx

var now = DateTimeOffset.Now;

這還將包括時區偏移信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM