2012-07-06 103 views
4

我正在編寫一個基於雲的程序,它利用UTC保存到服務器的日期,並在往返時將其轉換回來。問題是,雲中的實例根據瀏覽器上的本地化設置自動轉換JsonResult日期時間值以獲得結果。防止自動格式化JsonResult日期

我已經經歷了大量的步驟,以確保兩個級別上的服務器端代碼返回正確的數據,並且它在所有實例上,並且我的頁面上沒有任何Javascript代碼正在進行更改(甚至全部刪除我的Javascript日期格式以防萬一),我用Firebug來確定它改變的確切點,就是當我的頁面從我的JsonResult方法接收到Json Result時。就像我說的,我已經調整了值之前被髮送到頁面,他們是正確的,並根據我的迴應,他們修改基於瀏覽器的位置....

有沒有人有類似的問題?

返回值:日期(13417.92億)07/08/2012 17:00

應該是:日期(1341817200000)(07月09日12:00 AM)

感謝

+0

你說的是自動轉換爲本地時間還是格式化?在服務器上獲取發送日期或發送回客戶端時會發生不需要的行爲?我也會選擇刪除azure標籤。 – 2012-07-07 08:19:30

+0

這是一個基於Azure雲的問題,這就是爲什麼我用Azure標記它的原因。返回JsonResult時發生問題...發送給客戶端之前服務器上的所有值都是準確的...但是當JsonResult返回我的對象​​時,它們包含基於瀏覽器與服務器本地差異的修改日期時間。 – 2012-07-09 16:00:37

+0

我需要爲特定的時區格式化日期,無論加載頁面的瀏覽器位於何處,這都是我需要解決的基本問題。 – 2012-07-09 16:01:32

回答

1

我終於得到了正確的結果,對我的應用程序進行了許多修改。我做了很多事情來實現這個目標......首先,我實現了timezone.JS以獲取將在應用程序中使用的時區列表,並使用jstz獲取當前瀏覽器加載頁面的時區。接下來,我必須爲mvc創建一個文件get方法,以訪問時區以加載到timezoneJS中。

接下來,在保存時區時,我將pst指定爲類型,然後在往返轉換回utc以更新接口。

在我的Json日期的格式,我跑了timezoneJS方法和jstz獲得區名稱,並設定新的日期值,就像這樣:

var timezone = jstz.determine(); 
timezoneJS.timezone.zoneFileBasePath = '/Item/GetTz'; // get file method 
var dt = new timezoneJS.Date(parseInt(jsonDate.substr(6), timezone.name())); // strips out date from json date 
dt.setTimezone('America/Los_Angeles'); 

這允許在雲項目將跑任何服務器,並在任何瀏覽器中顯示,而不考慮時區,並允許用戶本地查看和配置時區敏感數據,並允許用戶查看可配置數據庫值的開始/結束日期。

0

你有沒有嘗試,

date.toLocaleString() 

Alternat , 您可以創建一個新的Date對象並使用Date.setUTC

+0

是的,返回DT的本地版本,而不是時區以外的pst格式... – 2012-07-10 22:10:14

+0

你想要它是MM/DD/YYYY XX:YY AM/PM格式?目前的格式是什麼? – CodeMad 2012-07-10 22:15:41