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-library を使用してデータを (逆) シリアル化します。

.NET 4.5 より前の Json.NET はエポック形式 ("/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 に答える