我正在调用包含datetime数据类型的数据库。日期如下:使用javascript/jquery格式化数据库的正确方法
2005-05-23 16:06:00.000
我想在一个表格中显示此当用户从列表中选择某一个项目。我打电话给我的控制器动作,并将Json的所有时间都放回到桌子上。问题是日期完全错误。什么是显示的是:
/日期(1255470180000)/
返回的日期是不是连解析的(我不想做反正),所以我甚至无法获得数据如果我想。有任何想法吗?
我正在调用包含datetime数据类型的数据库。日期如下:使用javascript/jquery格式化数据库的正确方法
2005-05-23 16:06:00.000
我想在一个表格中显示此当用户从列表中选择某一个项目。我打电话给我的控制器动作,并将Json的所有时间都放回到桌子上。问题是日期完全错误。什么是显示的是:
/日期(1255470180000)/
返回的日期是不是连解析的(我不想做反正),所以我甚至无法获得数据如果我想。有任何想法吗?
我结束了在控制器操作中的代码格式代替。
我只是使用.ToString()将datetime属性转换为字符串并获得了期望的结果。
感谢您的帮助,虽然家伙。
从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标签对我来说可能是你做的)。
另一种选择是从控制器操作返回格式化的字符串。你甚至可以留下时间戳,并返回第二个字段作为“格式化时间戳”或类似的东西。
var listFromDb = ...
return new Json(listFromDb.Select(itemFromDb => new List { new
{ Date = itemFromDb.Date, FormattedDate = FormatDate(itemFromDb.Date), ...}
我相信这是1970年1月1日以来的毫秒数 - 这个时代。 – Tarski 2010-04-15 21:37:13
@Tarski:谢谢,我澄清了。 (在JavaScript中,“tick”有时是“毫秒”的同义词,虽然当然这不是*如何用于C) – 2010-04-15 21:41:05
感谢您的解决方案。我希望有一种方法可以从控制器操作中返回一个非UTC值。 你给我的解决方案还显示:周五2005年1月21日10:29:00 GMT-0500(美国东部标准时间),而不是仅仅周五2005年1月21日10:29:00 – Darcy 2010-04-15 21:46:11