2010-04-15 78 views
0

我正在調用包含datetime數據類型的數據庫。日期如下:使用javascript/jquery格式化數據庫的正確方法

2005-05-23 16:06:00.000

我想在一個表格中顯示此當用戶從列表中選擇某一個項目。我打電話給我的控制器動作,並將Json的所有時間都放回到桌子上。問題是日期完全錯誤。什麼是顯示的是:

/日期(1255470180000)/

返回的日期是不是連解析的(我不想做反正),所以我甚至無法獲得數據如果我想。有任何想法嗎?

回答

1

我結束了在控制器操作中的代碼格式代替。

我只是使用.ToString()將datetime屬性轉換爲字符串並獲得了期望的結果。

感謝您的幫助,雖然傢伙。

2

從1970年1月1日午夜開始(UTC),您將返回的日期序列化爲一個標記和毫秒數。如果您將數字部分隔離,請將其轉換爲數字,然後將其提供給構造函數Date,您將得到一個實際的日期,然後您可以根據需要對其進行格式化。

var ticks, dt; 

// Isolate the numeric portion of the value 
ticks = /[0-9]+/.exec(json.dateValue)[0]; 

// Convert to a number 
ticks = parseInt(ticks); 

// Convert to a date 
dt = new Date(ticks); 

或者,如果該服務器上的JSON序列化支持「替代品」參數爲Crockford的和ECMAScript第5版的嗎,你能提供該格式的日期轉換爲字符串服務器端的一個替代品,並處理它那裏,因爲你說過你不想解析客戶端的日期(儘管jQuery標籤對我來說可能是你做的)。

+0

我相信這是1970年1月1日以來的毫秒數 - 這個時代。 – Tarski 2010-04-15 21:37:13

+0

@Tarski:謝謝,我澄清了。 (在JavaScript中,「tick」有時是「毫秒」的同義詞,雖然當然這不是*如何用於C) – 2010-04-15 21:41:05

+0

感謝您的解決方案。我希望有一種方法可以從控制器操作中返回一個非UTC值。 你給我的解決方案還顯示:週五2005年1月21日10:29:00 GMT-0500(美國東部標準時間),而不是僅僅週五2005年1月21日10:29:00 – Darcy 2010-04-15 21:46:11

0

另一種選擇是從控制器操作返回格式化的字符串。你甚至可以留下時間戳,並返回第二個字段作爲「格式化時間戳」或類似的東西。

var listFromDb = ... 
return new Json(listFromDb.Select(itemFromDb => new List { new 
    { Date = itemFromDb.Date, FormattedDate = FormatDate(itemFromDb.Date), ...} 
相關問題