繁体   English   中英

使用javascript / jquery从数据库格式化日期的正确方法

[英]Proper way to format date from database using javascript/jquery

我正在调用包含日期时间数据类型的数据库。 日期看起来像这样:

2005-05-23 16:06:00.000

当用户从列表中选择某个项目时,我想在表中显示它。 我调用我的控制器动作,并一直返回Json并将它们放在表中。 问题是日期是完全错误的。 显示的内容是:

/日期(1255470180000)/

返回的日期甚至都不是可解析的(无论如何我都不想这样做),因此我什至无法获取数据。 有任何想法吗?

自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 5th Edition的“ replacer”参数,则可以提供一个将日期格式化为字符串的服务器端并在那里处理的替代器,因为您说不想要解析客户端的日期(尽管jQuery标记建议我也许已经做到了)。

我最终在控制器操作中格式化了代码。

我只是使用.ToString()将datetime属性转换为字符串,并获得了所需的结果。

谢谢你们的帮助。

另一种选择是从控制器操作中返回格式化的字符串。 您甚至可以离开时间戳记,并返回第二个字段为“格式化时间戳记”或类似内容。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM