亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 TimeZoneInfo.FindSystemTimeZoneById("UTC")

為什么 TimeZoneInfo.FindSystemTimeZoneById("UTC")

C#
桃花長相依 2022-12-31 10:34:03
我正在嘗試為我的 Umbraco V8 包創建一個 APIcontroller。API 工作正常,但我只希望我的后臺 AngularControllers 能夠訪問 API。我希望創建一個如本答案https://stackoverflow.com/a/30573590/11409365中所述的屬性。這樣只有本地機器可以訪問 API。我認為這不相關,但這是我的 APIController 中的代碼    public class PackageApiController : UmbracoApiController    {        [HttpGet]        public string GetString()        {            return "Test";        }     }但是我應該在哪里添加我的 WebApiConfig 類以及如何確保 ApiController 使用這個類?
查看完整描述

3 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

你是兩個不同的結果,因為根據GetSystemTimeZones()TimeZoneInfo.cs的實現將嘗試查找和收集時區數據。Registry.LocalMachine

FindSystemTimeZoneById的情況下,它具有如下條件。如果不匹配,它將從Registry.LocalMachine.

if (String.Compare(id, c_utcId, StringComparison.OrdinalIgnoreCase) == 0) { 
   return TimeZoneInfo.Utc;
}


查看完整回答
反對 回復 2022-12-31
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

答案可在以下參考資料中找到FindSystemTimeZoneById


// Special case for Utc as it will not exist in the dictionary with the rest

// of the system time zones.  There is no need to do this check for Local.Id

// since Local is a real time zone that exists in the dictionary cache

if (String.Compare(id, c_utcId, StringComparison.OrdinalIgnoreCase) == 0) {

    return TimeZoneInfo.Utc;

}

它所指的字典是從 填充的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones,并且是GetSystemTimeZones返回的內容。


但是,我不認為評論和邏輯是正確的,因為我的 Windows 10 build 1803 機器在上述注冊表路徑中有一個“UTC”條目(假設您的計算機具有相同的條目)??雌饋磉@在早期版本的 Windows 中可能是正確的,但也許不再是這樣了 -已在 corefx 存儲庫中提交錯誤以獲得清晰度。



查看完整回答
反對 回復 2022-12-31
?
達令說

TA貢獻1821條經驗 獲得超6個贊

這段代碼是很久以前寫的,在那段時間假設 Utc 沒有在機器上枚舉,也不會存儲在本地字典中。我同意現在情況并非如此。雖然我沒有看到這會導致真正的問題,因為兩個 Utc 創建的對象都會正確運行,但我認為最好修復它并確保我們使用一個 Utc 對象。

@Ian Kemp,感謝您在 corefx 存儲庫中打開問題。我們將在 .NET Core 的未來版本中處理這個問題。


查看完整回答
反對 回復 2022-12-31
  • 3 回答
  • 0 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號