2016-09-26 67 views
0

對於我數據庫中的其中一條記錄,我們存儲了代表相同時刻的兩個時間戳。在沒有偏移量的情況下在本地時間顯示來自數據庫的UTC日期時間

其中之一爲UTC如本「2016年9月23日11:43:34.0000000」

而另一個具有本地時間的上載數據到DB如此設備'2016-09-23 06:43:34.0000000'

由於列是datetime2,它們都沒有存儲偏移量。我的問題是,在我的客戶端應用程序上使用我的服務器上的C#或Javascript(如moment.js),我能夠在用戶本地時間顯示UTC時間戳嗎?從客戶端應用程序中,我可以獲取當前用戶的時間偏移量並進行計算,但我不明白我應該對UTC時間戳執行哪種類型的計算。

我看過這篇文章中的例子Here,但已經注意到他們使用的原始日期時間格式('2015-02-05T07:52:27.59')與我的很不一樣。

回答

2

下面是解析和轉換utc時間到本地的各種方法。我更喜歡時區變化。

var utcMoment = moment.utc('2016-09-23 11:43:34.3456789', 'YYYY-MM-DD hh:mm:ss.SSSSSSS').format('YYYY-MM-DD HH:mm:ss.SSS'));  

//Using Date 
var localTime = moment.utc(utcMoment).toDate().format('YYYY-MM-DD HH:mm:ss'); 
//Using local 
var localTimeMoment = moment.utc(utcMoment).local().format('YYYY-MM-DD HH:mm:ss'); 
//Using Timezone 
var localTimeTz = moment.utc(utcMoment).tz('America/Chicago').format('YYYY-MM-DD HH:mm:ss'); 
//Using Offset 
var localTimeOffset = moment.utc(utcMoment).utcOffset('-05:00').format('YYYY-MM-DD HH:mm:ss'); 
+0

有一個問題,我注意到你的初始utc時間戳包含小數點後面的各種數字,在我的情況下它總是以.000000存儲在數據庫中。這會對你的上述結果產生什麼影響? –

+0

我不認爲它會有任何效果。請驗證。 – Veeram

1

使用 var date =new GetUTCDate(//any date);

你會得到如果想有一個C#解決方案,您可以使用DateTimeOffset對象在UTC甲

+0

我已經在UTC日期,在上面的例子是2016年9月23日11:43:34.0000000我的問題是我怎麼能顯示這個時間戳在用戶本地時間,當我的UTC日期沒有一個偏移量。 –

1

日期。具體而言,您需要使用tryParse方法,該方法允許您使用UTC打印。

如果您更喜歡js解決方案,那麼與時間往往是更好的選擇。我相信你需要使用()。utcOffset()函數來操縱你當前的時間戳。

相關問題