次の日時が SQL Server 2005 データベースに保存されています: 2012-12-06 16:20:11.010
.
クライアント側で JavaScript を使用してこの日時を表示したいのでSystem.Web.Helpers.Json.Encode
、次のコードを実行するを使用して (より大きなオブジェクトの一部として) シリアル化します。
internal static readonly long DatetimeMinTimeTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
private static void SerializeDateTime(DateTime datetime, StringBuilder sb, JavaScriptSerializer.SerializationFormat serializationFormat)
{
if (serializationFormat == JavaScriptSerializer.SerializationFormat.JSON)
{
sb.Append("\"\\/Date(");
sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks) / 10000L);
sb.Append(")\\/\"");
return;
}
sb.Append("new Date(");
sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks) / 10000L);
sb.Append(")");
}
クライアント側では、次のように日時オブジェクトに変換します: ( JSFiddle )
var strDate = "/Date(1354828811010)/"; //value returned by above function
var re = /-?\d+/;
var m = re.exec(strDate);
var date = new Date(parseInt(m[0]));
タイムゾーンが東部標準に設定されている PC では、この時刻は として正しく表示されThu Dec 06 2012 16:20:11 GMT-0500 (Eastern Standard Time)
ます。ただし、タイムゾーンが GMT-6 の PC では、 として返されThu Dec 06 2012 15:20:11 GMT-0600 (Central Standard Time)
ます。
今回は として正しいThu Dec 06 2012 16:20:11 GMT-0600 (Central Standard Time)
ですが、正しく表示する方法がわかりません。タイムゾーンを実際に表示する必要はありません。ユーザーのローカル タイムゾーン設定に関係なく、16:20:11 と表示されるだけで十分です。
日付を特定のタイムゾーンに強制するためのJavaScriptのメカニズムはありますか? 私が行った調査では、そうではないことが示唆されています。
それ以外の場合、サーバー側を変更する必要がある場合、最善の策は何ですか?