2012-07-25 38 views
5

有誰知道如何解析json時間跨度對象? 我想將UTC時間範圍返回到我的視圖,然後將其轉換爲本地客戶端時間,但我沒有找到任何有關如何執行此操作的參考。如何使用json和javascript/jquery正確處理db時間值

我使用MVC所以我有了這個模型:

public class TimeSpanModel 
{ 
    public TimeSpan StartTime { get; set; } 

    public TimeSpanModel() 
    { 
     this.StartTime = DateTime.UtcNow.TimeOfDay; 

    } 
} 

,並在我的控制器我這個模型回到我的看法是這樣的:

public ActionResult GetTimeSpanInfo() 
    { 
     TimeSpanModel tsm= new TimeSpanModel(); 
     return Json(tsm); 
    } 

我正在做的這樣調用從視圖:

$.ajax({ 
     type: 'POST', 
     url: '@Url.Content("~/Controller/GetTimeSpanInfo")', 
     success: function (data) { 
     alert(data.StartTime); 
     var dt = new Date(data.StartTime); 
     alert(dt.toString()); 
     } 
    }); 

,但在第一個警告框,我只看到這一點:[對象的對象] 所以我嘗試將時間範圍轉換爲日期,但在第二個警報框中,我收到無效日期。

我需要將時間範圍轉換爲字符串,然後將該字符串與某些我不需要的奇數日期連接起來,以創建「有效」日期,然後將其轉換爲本地時間,然後提取那個時間?

還是有更容易,更優雅的方式來使用TimeSpans,或只是日期時間值的時間部分?

感謝您的任何幫助。

P.S.將UTCnow時間轉換爲本地時間似乎很愚蠢,但我最終會從db表中獲取UTC時間值 - 類型time(0)。我在上面發佈的方法只是一個簡短的方法來測試如何處理這個值,一旦我從數據庫中獲得它,然後在模型中設置值。

+0

你能發佈這類返回的JSON的例子嗎?應該代表什麼時間跨度?幾秒鐘?兩個日期時間可以顯示爲本地日期時間,並顯示它們之間的區別? – JMM 2012-08-04 16:48:38

+0

您可以返回長類型。 – Myd 2012-08-07 09:19:47

回答

2

您看到的[object Object]是因爲TimeSpan沒有JSON表示,因此最簡單的解決方案是使用通用格式來傳遞此值,即毫秒。使用Date構造日期(毫秒)在JavaScript

public ActionResult GetTimeSpanInfo() 
    { 
     TimeSpanModel tsm= new TimeSpanModel(); 
     return Json(tsm.TotalMilliseconds.ToString()); 
    } 

和解析,如下所示:

$.ajax({ 
     type: 'POST', 
     url: '@Url.Content("~/Controller/GetTimeSpanInfo")', 
     success: function (data) { 
     alert(data); 
     var dt = new Date(data); 
     alert(dt.toString()); 
     } 
    }); 
2

作爲人類可讀培養無關的方式字符串:

來自Javascript

var dateParam = aDate.toUTCString(); 

到C#

DateTime aDate = DateTime.ParseExact(dateParam, "r", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); 

現在從C#

DateTime formattedDateFromCSharp = aDate.ToString("r"); 

爲Javascript

var aDate = Date.parse(formattedDateFromCSharp); 
+0

感謝您的回答。即使我只對時間感興趣,但我最終使用了完整的DateTime類型,因爲它更容易。收到DateTime後,我從中提取了我需要的小時/分鐘值。 – codenewbie 2012-09-24 01:00:15