您在数据库中查看日期的格式通常是无关紧要的,因为它应该作为DateTime 而不是string 传递到.Net。 (如果你将它作为varchar 存储在数据库中,你的问题就更大了。)
ASP.Net WebAPI 以ISO8601 和RFC3339 定义的格式返回值。这是一件好事,因为它是一种公认的机器可读格式。你可能不想改变它。
如果你真的想改变它,你需要实现一个自定义的 JSON.Net JsonConverter,从 DateTimeConverterBase 派生。这在here 和here 进行了讨论。
但是,您应该考虑如何在客户端应用程序中使用实际结果。您提到了 jQuery,所以我假设您的使用者是 JavaScript。在许多浏览器中,您拥有的 ISO8601 值已经被 JavaScript Date 构造函数识别,因此您可以这样做:
var dt = new Date("2011-09-07T14:43:22.520");
但是这个won't work in all browsers。而Date 在格式化方面没有很大的灵活性。因此,您可能需要考虑使用诸如moment.js 之类的库。有了它,你可以这样做:
var m = moment("2011-09-07T14:43:22.520");
var s = m.format("YYYY-MM-DD HH:mm:ss"); // output: "2011-09-07 14:43:22"
请注意这里的格式字符串符合moment.js,而不是.NET。区分大小写存在差异。详情请参考the moment.js documentation。
另一件事 - 由于您提供的值末尾没有Z,也没有诸如-07:00 之类的偏移量,所以我假设它来自DateTime whos @987654340 @ 值为 DateTimeKind.Unspecified。您应该知道,当它被发送到 JavaScript(或其他任何地方)时,没有关于表示哪个时区的信息。 JavaScript 将假定 浏览器 的本地时区。
如果这不是您想要的,那么您需要将 UTC 值存储在您的数据库中,并确保它们具有DateTimeKind.Utc,以便它们在最后使用Z 进行序列化。 JavaScript 会将其标准化为浏览器的时区,但您仍然会谈论同一时间。
或者,您可以使用 DateTimeOffset 类型 - 它会使用特定的偏移量进行序列化。 JavaScript 仍会将其标准化为用户的时区。