2015-11-19 148 views
0

我正在構建調度程序應用程序。前端是使用JavaScript開發的,在後端我們使用.NET和SQL服務器。JavaScript - 將本地時間轉換爲UTC或國家特定時間

用戶將被要求選擇一個時間(這將是他的機器本地)。我想把那個時間轉換成東部標準時間。

調度程序應用程序將基於EST運行。

我會保存用戶選擇的本地時間,用戶的時區信息和用戶選擇的時間的EST等值。

我可以通過以下fiddle

var tz = jstz.determine(); 
console.log(tz.name()); 

要獲得EST等效時間得到的時區,我將使用 TimeZoneInfo類當DST的變化發生,我將有一個存儲過程來更新相應的EST時間。

讓我知道這是否是有效的方法?

+1

說*國家時區*真的在談論一些不存在的東西。美國有4個區域......所以哪一個?我會建議你只使用*時區*。 –

+0

@ErikPhilips:因爲我將從newwork運行服務器,所以我在東部時間提到過。所以如果我們把EST作爲基準時區,我應該怎麼做? – SharpCoder

+0

你幾乎[問昨天同樣的事情](http://stackoverflow.com/q/33765831/634824)。如果你想要更具體的東西,那麼你需要在問題中更具體。顯示一些代碼。什麼工作,什麼沒有,你期望什麼,等等。 –

回答

-1

使用此

var utc_date = new Date().toISOString(); 

它會返回像2015-11-19T19:41:45.865Z

+0

,如果你是C#或C++的專家,那麼你可以申請所需的時區 –

+1

如果你有其他一些複雜的時區轉換,你可以使用這個庫http://momentjs.com/timezone/ –

+0

我不知道是誰投票的我但我只想問你能告訴我原因嗎? –

1

用戶UTC格式化字符串將被要求選擇一個時間(這將是本地到他的機器)。

這很好。對於調度應用程序,這是有道理的。

我想將該時間轉換爲東部標準時間。

調度程序應用程序將基於EST運行。

這不是一個好主意。服務器的位置應該是不相關的。尤其是美國東部時間在美國東部時間和美國東部時間之間波動在EST基礎上只考慮一半,基於ET意味着處理代碼中的波動。

通常,您的服務器應設置爲UTC,但運行在服務器上的代碼不應在意服務器設置的時區。

在服務器上使用DateTime.UtcNow來獲取當前UTC時間。無論服務器的時區如何,該值都是相同的。

我將保存用戶選擇的本地時間,用戶的時區信息和用戶選擇的時間的EST等值。

是在前兩個。第三,您應該存儲UTC等值 - 而不是EST等效值。

如果時區規則在事件發生之前發生更改,則還需要準備重新計算UTC值。

我可以用下面撥弄得時區...

jstz會猜測用戶的時區 - 但它僅僅是一個猜測。這可能是錯的。從時區列表中選擇默認選項非常棒,但不應以用戶無法覆蓋的方式直接使用。

此外,它還會返回一個IANA TZDB標識符,如America/Los_Angeles。這些目前不適用於Windows上的TimeZoneInfo。要使用這些,您需要在您的C#代碼中使用Noda Time

相關問題