【问题标题】:how to convert date format for ASP.Net Web API with signalR?如何使用 signalR 转换 ASP.Net Web API 的日期格式?
【发布时间】:2012-12-05 07:30:36
【问题描述】:

我已经实现了 asp.net web api 和 signalr,以便将数据推送到客户端。

有效负载包括通过 Asp.Net Web API 中的 signalR 将 DateTime 值推送到浏览器。

问题是在浏览器上接收数据时,我得到的是 iso 格式的日期 即 2012-12-04T19:30:18 但我想要 microsoftdate 格式的数据,即 "\date(...)"

为此,我尝试在 asp.net web api 的 global.asax 中的 application_start 事件中进行以下操作:

    var json =config.Formatters.JsonFormatter;
        json.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;

但仍将日期设为“2012-12-04T19:30:18”。

有什么想法吗?

【问题讨论】:

    标签: signalr asp.net-web-api


    【解决方案1】:

    从 SignalR 1.0 开始,您可以在应用启动时注册自己的 JsonNetSerializer,并使用如下自定义设置:

    using System;
    using System.Web;
    using Microsoft.AspNet.SignalR;
    using Newtonsoft.Json;
    
    namespace MyApp
    {
        public class Global : HttpApplication
        {
            protected void Application_Start(object sender, EventArgs e)
            {
                var settings = new JsonSerializerSettings();
                settings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
                var serializer = new JsonNetSerializer(settings);
    
                GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer), () => serializer);
            }
        }
    }
    

    【讨论】:

    • 谢谢halter..这正是我想要的。上述实现正在运行。
    【解决方案2】:

    我没有完全理解您遇到的问题,但我假设您正在尝试将当前的 DateTime 从服务器传递到客户端并读取它?

    如果是这样,您可以通过以下方式发送/解析(无需任何序列化更改): SignalR datetime format

    这是读取 DateTIme 的 JavaScript 方式。

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      相关资源
      最近更新 更多