Pas*_*cal 0 c# serialization datetime json asp.net-web-api2
我有一个带有实体框架的 WEB API 2 调用。如果我DateTime从我从数据库中读取的实体中更新一列DateTime.Now,并将其序列化到客户端,DateTime那么我从数据库收到的列有 3 个毫秒数,但是DateTime我在 C# 中更新的列代码有 6 位数字。下面是我的控制器中的 C# 代码:
[Route("{id:long}/updatedatetime", Name = "UpdateDateTimeByID")]
[HttpPost]
[ResponseType(typeof(ClGroup))]
public async Task<IHttpActionResult> UpdateDateTimeByID(int id)
{
ClGroup clGroup = await db.ClGroups.FindAsync(id);
if (clGroup == null)
{
return NotFound();
}
clGroup.DtUpdate = DateTime.Now;
await db.SaveChangesAsync();
var groupReturn = mapper.Map<ClGroupModel>(clGroup);
return Ok(groupReturn);
}
Run Code Online (Sandbox Code Playgroud)
下面是序列化回客户端的 JSON
{
"CdGroup": 1,
"NmGroup": "Grupo 1",
"DcGroup": "Primeiro Grupo",
"DtInsert": "2016-07-03T22:18:52.257",
"DtUpdate": "2016-07-12T13:31:08.2882558",
"IdStatus": true
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让DtUpdate3 位数字序列化?我使用以下配置更改了格式化程序:
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;
json.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
Run Code Online (Sandbox Code Playgroud)
谢谢
使用 anIsoDateTimeConverter并DateFormatString在其上设置属性,如下所示:
var dateConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter
{
DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'"
};
json.SerializerSettings.Converters.Add(dateConverter);
Run Code Online (Sandbox Code Playgroud)
小写字母fff确保毫秒部分的长度始终为 3 位数字。相比之下,默认格式使用大写字母FFFFFFF表示毫秒,包括最多七位精度,但省略尾随零。这就是为什么您会看到毫秒的不同长度。
有关自定义日期格式的详细信息,请参阅.NET Framework 文档中的自定义日期和时间格式字符串。
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |