サーバー側コード c# .net4 で SignalR を使用しています。クライアントでは、javascript を使用しています。
たとえば、サーバーからクライアントメソッドを呼び出すとき
Caller.ShowDate(DateTime.Now);
クライアント側の JavaScript は、「2012-11-13T19:02:39.3386544+02:00」の値を文字列として取得します。
javascript で日付として使用するにはどうすればよいですか?
サーバー側コード c# .net4 で SignalR を使用しています。クライアントでは、javascript を使用しています。
たとえば、サーバーからクライアントメソッドを呼び出すとき
Caller.ShowDate(DateTime.Now);
クライアント側の JavaScript は、「2012-11-13T19:02:39.3386544+02:00」の値を文字列として取得します。
javascript で日付として使用するにはどうすればよいですか?
タイムゾーン/クライアントがクロックを変更するなどの理由により、クライアントの時間はサーバーの時間と大幅に異なる可能性があることに注意してください。
C#:
Caller.ShowDate(DateTime.UtcNow);
JavaScript:
myHub.client.ShowDate = function(d) {
var serverTime = new Date(d); // The Server Time in JavaScript
}
あなたが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));
};