第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將 javascript new Date().getTimezoneOffset()

如何將 javascript new Date().getTimezoneOffset()

繁星coding 2022-12-18 16:17:50
請(qǐng)參閱標(biāo)題:對(duì)于我正在處理的解決方案,我需要獲取當(dāng)前時(shí)區(qū)偏移量(從客戶(hù)端,運(yùn)行 javascript/jQuery)并在后端 C# 代碼中使用它。這個(gè)問(wèn)題與此處提出的問(wèn)題非常相似,但存在一些差異 - 主要差異是我非常確定客戶(hù)端計(jì)算機(jī)上的時(shí)間不會(huì)被篡改。所以new Date().getTimezoneOffset()就可以了。我無(wú)法在提交表單時(shí)讀取值,因?yàn)橛脩?hù)不在表單中工作:用戶(hù)登錄后,在屏幕上可見(jiàn)的項(xiàng)目中有一個(gè)表格,其中包含用戶(hù)或其他用戶(hù)輸入的數(shù)據(jù)。此數(shù)據(jù)包含必須根據(jù)客戶(hù)端時(shí)區(qū)進(jìn)行調(diào)整的 UTC 日期時(shí)間。C# 代碼負(fù)責(zé)檢索和格式化數(shù)據(jù)——因此我的問(wèn)題。將值存儲(chǔ)在某處就足夠了,以便 C# 可以在必要時(shí)讀取它。但我不認(rèn)為這也可以做到。這里的方法是什么?提前致謝!
查看完整描述

1 回答

?
尚方寶劍之說(shuō)

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

您建議的方法存在缺陷,因?yàn)榭蛻?hù)端瀏覽器的當(dāng)前偏移量?jī)H適用于當(dāng)前日期和時(shí)間。實(shí)際上,時(shí)區(qū)偏移量在給定時(shí)區(qū)內(nèi)隨時(shí)間變化。您不能僅從一個(gè)時(shí)間點(diǎn)獲取單一偏移量并期望使用它來(lái)將其他日期和時(shí)間轉(zhuǎn)換為同一時(shí)區(qū)。相反,您需要使用標(biāo)識(shí)時(shí)區(qū)的字符串,而不是該時(shí)區(qū)的偏移量。

例如,考慮美國(guó)的東部時(shí)區(qū)。在一年中的部分時(shí)間,它使用 UTC-5,我們稱(chēng)之為東部標(biāo)準(zhǔn)時(shí)間 (EST)。在一年中的其他時(shí)間,它使用 UTC-4,我們稱(chēng)之為東部夏令時(shí) (EDT)。這個(gè)時(shí)區(qū)由 IANA time zone ID"America/New_York"或 Windows time zone ID 標(biāo)識(shí)"Eastern Standard Time"(涵蓋整個(gè)區(qū)域,包括 EST 和 EDT,盡管它的措辭)。

所以,把這個(gè)問(wèn)題分解成幾個(gè)步驟:

  1. 在 JavaScript 中,識(shí)別用戶(hù)的 IANA 時(shí)區(qū) ( America/New_York):

    • 如果你的目標(biāo)是現(xiàn)代網(wǎng)絡(luò)瀏覽器,你可以調(diào)用這個(gè)函數(shù):

      Intl.DateTimeFormat().resolvedOptions().timeZone
    • 如果你需要支持舊的網(wǎng)絡(luò)瀏覽器,你可以使用jsTimeZoneDetect,或者moment.tz.guess()來(lái)自Moment-Timezone。

  2. 通過(guò)您喜歡的任何機(jī)制(表單發(fā)布、XHR、獲取等)將該字符串發(fā)送到您的網(wǎng)絡(luò)服務(wù)器

  3. 在您的 .NET 代碼中,接收該字符串并使用它來(lái)引用時(shí)區(qū)并進(jìn)行轉(zhuǎn)換。你有兩個(gè)選擇:

    • 您可以使用Noda Time,將 IANA 時(shí)區(qū) ID 傳遞給DateTimeZoneProviders.Tzdb主頁(yè)示例中所示。

    • 您可以使用 .NET 的內(nèi)置TimeZoneInfo對(duì)象。如果您在非 Windows 系統(tǒng)(Linux、OSX 等)上運(yùn)行 .NET Core,您只需將 IANA 時(shí)區(qū) ID 傳遞給TimeZoneInfo.FindSystemTimeZoneById. 如果您使用的是 Windows,則需要先將其轉(zhuǎn)換為 Windows 時(shí)區(qū) ID ( "Eastern Standard Time")。您可以使用TZConvert.GetTimeZoneInfo我的TimeZoneConverter庫(kù)。

  4. 一旦您擁有DateTimeZoneNoda Time 或TimeZoneInfo對(duì)象,您就可以使用其上的方法將 UTC 值轉(zhuǎn)換為該時(shí)區(qū)的本地時(shí)間值。這些中的每一個(gè)都將為轉(zhuǎn)換的時(shí)間點(diǎn)應(yīng)用正確的偏移量。

我還要說(shuō),許多應(yīng)用程序只是要求用戶(hù)從下拉列表中選擇他們的時(shí)區(qū)并將其保存在用戶(hù)配置文件中。只要您存儲(chǔ)的是時(shí)區(qū)標(biāo)識(shí)符字符串而不僅僅是數(shù)字偏移量,這種方法完全可以用來(lái)替換上面的步驟 1 和 2。


查看完整回答
反對(duì) 回復(fù) 2022-12-18
  • 1 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)