3

我在我的服务器端代码 c# .net4 中使用 SignalR。在客户端我使用 javascript。

例如,当我从服务器调用客户端方法时

    Caller.ShowDate(DateTime.Now);

客户端javascript获取“2012-11-13T19:02:39.3386544+02:00”作为字符串的值。

如何在 javascript 中使用它作为日期?

4

3 回答 3

4

请记住,由于时区/客户端修改时钟等,客户端时间可能与服务器时间有很大不同。话虽如此:

C#:

Caller.ShowDate(DateTime.UtcNow);

JavaScript:

myHub.client.ShowDate = function(d) {
    var serverTime = new Date(d); // The Server Time in JavaScript
}
于 2012-11-13T18:11:03.420 回答
0

如果你不喜欢使用 IE8 的人,那么可以阅读下面的评论:

SignalR 使用 Json.Net 库来(反)序列化数据。

在 .NET 4.5 之前,Json.NET 使用 epoch-format ("/Date(1198908717056)/"),然后开始使用 ISO8601 标准 ("2012-03-19T07:22Z") [请参阅JSON 中的序列化日期]

如果你想使用 epoch-format,你需要重新配置 json-serializator [参见更换 IJsonSerializer]

public class Global : System.Web.HttpApplication
{
    protected void Application_Start(object sender, EventArgs e)
    {
        var serializer = new JsonNetSerializer(new JsonSerializerSettings
        {
            DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
            NullValueHandling = NullValueHandling.Ignore
        });

        GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer), () => serializer); 
    }
}

在客户端,您可以使用此代码将纪元时间转换为日期:

function epochUtcToDate(epochUtc) {
    return new Date(parseInt(epochUtc.substr(6), 10));
};
于 2013-07-01T12:12:29.163 回答
0

如果您已将时区添加到 Json 日期,则需要使用服务器的本地时间

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        GlobalHost.HubPipeline.AddModule(new ElmahPipelineModule());
        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration
            {
            };
            map.RunSignalR(hubConfiguration);
        });
        var jsonSerializer =  new JsonSerializer();
        jsonSerializer.DateFormatHandling = DateFormatHandling.IsoDateFormat;
        jsonSerializer.DateTimeZoneHandling = DateTimeZoneHandling.Local;
        jsonSerializer.NullValueHandling = NullValueHandling.Ignore;
        GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => jsonSerializer);


    }
}
于 2014-01-24T15:37:33.530 回答