【问题标题】:Any idea why in client I get only part of variable DateTime?知道为什么在客户端我只得到变量 DateTime 的一部分吗?
【发布时间】:2016-05-01 18:44:41
【问题描述】:

我在我的项目中使用 web api 和 angularjs。

我有这门课:

  public class DamageEvent
    {
       public int Id { get; set; }
       public int? ClientId { get; set; }
       public DateTime? CreateDate { get; set; }
    }

从客户端我使用http服务来调用这个动作方法:

    public async Task<IHttpActionResult> RetriveDamageEvents()
    {
        try
        {       
            //Using Linq to Entity to get data from DataBase.
            DamageEvent damageEvent = _repository.Get().Where(some logic).SingleOrDefault();
            //The content of damageEvent after retriving from database is:
            //damageEvent = {id = 1, ClientId = 25, CreateDate = 5/1/2016 5:26:14 PM}
            return Ok(damageEvent);
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

但是当我在客户端收到它时,我使用调试器监视来检查值,它看起来像这样:

{
   id : 1, 
   ClientId : 25, 
   CreateDate : "5/1/2016"
}

正如您在客户端看到的,对象损坏事件中的 CreateDate 属性缺少这部分变量:

5:26:14 PM

知道为什么在客户端我只得到变量 DateTime 的一部分吗?为什么缺少小时、分钟和秒?

【问题讨论】:

  • 这看起来不像 AngularJS 问题。 JSON 是否高于您从端点请求获得的响应?如果是,那么它不是 AngularJs。
  • 检查使用REST客户端或浏览器时是否得到相同的结果

标签: angularjs asp.net-web-api asp.net-web-api2


【解决方案1】:

听起来像是一个序列化问题。在您的 App_Start/WebApiConfig.cs 文件中,您可以设置您的序列化程序设置。

config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;

我建议将所有日期存储为 UTC,然后您的客户可以决定如何显示。这样,系统中的每个日期都是一致的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多