c# - .NET WebApi 不一致的日期时间类型 POST 与 GET

标签 c# json datetime asp.net-web-api

当我通过 GET 请求从 AngularJS 向我的 WebApi Controller 发出 JSON 调用时,我的日期以“本地”类型传递到我的模型。这很好,我希望它如何工作。

但是,当我将方法更改为 POST 时(在 WebApi Controller 和我的 AngularJS 客户端代码上),日期是一个小时,因为 DateTime 类型现在是 UTC。日期在发送前通过 .toJSON() 序列化,在查看 GET 和 POST 请求时,通过 Chrome 的网络检查,一切看起来都一样。

如何使 DateTime Kind 在 POST 和 GET 请求中保持一致,以便它们始终是本地的?

编辑#1:

角度 JS 调用:

            var params = {
                DateFrom: detail.from.toJSON(),
                DateTo: detail.to.toJSON(),
                Filters: detail.filters
            };

            return http.post(window.urls.apiGetAllErrorsGraphData, params);

在我当前的示例中,params.DateFrom = "2014-04-30T23:00:00.000Z", detail.from = 01/05/2014 的值作为 JS 日期对象。

本例中的“http.post”是我编写的 Angular 服务,它基本上包装了 HTTP 调用。

.NET WebAPI Controller

    [POST("api/errors/chart")]
    [HttpPost]
    [HttpOptions]
    public IHttpActionResult GetAllErrorsGraphData([FromBody]AllErrorChartDetails details)
    {
        var results = chartDataService.GenerateAllErrorsData(details.DateFrom, details.DateTo, details.Filters);

        return Ok(results.Select(x => new { date = x.Key, errors = x.Value }));
    }

如果您对方法上的属性感到好奇,我正在使用 AttributeRouting。

最佳答案

您能否在检索 DateTime 对象时将其转换为您需要的任何格式?

DateTime json = yourJsonMethod();
json = json.ToLocalTime();

关于c# - .NET WebApi 不一致的日期时间类型 POST 与 GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728555/

相关文章:

javascript - 想要在 Node JS/MySQL 中将 12 小时时间字符串转换为时间对象

c# - 使垂直嵌套滚动始终可见

c# - Html.CheckBox 呈现两个复选框

c# - 如何知道网络请求是否是从特定的另一个已知网站的链接按钮发出的

jquery - MVC4 中使用 Knockout.js 的级联下拉菜单,JSON 根据验证器返回有效的 JSON,但 Jscript 出现无效字符错误

datetime - 选择大于 12 的日期时验证错误

c# - 自定义控件构造函数

java - GSON:反序列化通用对象

javascript - JSONRequest.get 无响应

PHP将日期时间与时间相加并获取时差