2010-09-01 110 views
0

我有一個顯示對象數據的頁面。我正在加載對象服務器端,並通過與json的AJAX調用傳遞結果。有一個日期屬性是對象的一部分。出於某種原因,日期正在改變。它看起來好像試圖考慮我所處的時區,並從日期中減去4小時(我在美國東部時間,與格林威治標準時間差-4)。使用JSON傳遞日期時更改爲本地時間

當我單擊消息的「顯示」按鈕時,它會進行AJAX調用以加載該消息的數據,然後顯示它。

這裏是我的javascript代碼:

function onBtnDisplayClicked(id) 
{ 
    $.ajax({ 
     type: "POST", 
     url: "<%= Url.Action("GetMessage") %>?id=" + id.toString(), 
     success: function(data) { bindItem(data); }, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8" 
    }); 
} 


function bindItem(data) 
{ 
    $("#MessageID").val(data.MessageID); 

    //Create a Date object from JSON date format - ex: (1230807660000-4000) 
    var messageDate = new Date(parseInt(data.MessageDate.replace(/\/Date\((\d+)\)\//, '$1'))); 

    //Format date using DateFormat plugin (http://jacwright.com/projects/javascript/date_format) 
    $("#txtMessageDate").val(messageDate.format('m/d/Y H:i')); 
} 

這是我的服務器端代碼:

public JsonResult GetMessage(int id) 
{ 
    Message msg = new Message(); 
    msg.LoadByPrimaryKey(id); 

    var data = new 
    { 
     MessageID = msg.MessageID.Value, 
     MessageDate = msg.MessageDate.Value 
    }; 

    return new JsonResult() { Data = data }; 
} 

這將正常工作,在我當地的環境,卻沒有關於我的生產環境。在我的本地環境中,服務器時間設置爲EST(下午2:00)。生產時,服務器時間設置爲GMT(下午6:00)。

所以如果我試圖顯示「09/01/2010 09:00 AM」,它將在我的本地環境中正確顯示,但是在生產中顯示爲「09/01/2010 05:00 AM」 。我不確定它爲什麼這樣做。

回答

0

很可能這樣做是因爲它知道什麼時區的日期是從哪裏來的,所以從技術上來說,他們都表示在時間上與問候你時區相同點......

我不完全知道如何你會這樣做,但是你需要重寫在向UI呈現日期時格式化字符串時使用的時區。如果您有權訪問該日期時間插件中的代碼,那麼我認爲這是解決問題的地方。

對不起,它不是一個實際的答案;我只有理論,因爲現在我幾乎沒有JSON/AJAX的經驗。

+0

幾乎沒有JSON的經驗,爲什麼你會回答Json問題?只是增加了噪音。 – 2012-07-06 22:02:13

+0

@SeanHaddy我也回答了我的理論。這個「噪音」是唯一的答案,並被標記爲選擇的答案。你是否只是隨意回答批評免費幫助?我是因爲C#標記而來到這裏的。 – 2012-07-07 07:11:45

相關問題