我在 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 的电脑上,它返回为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中是否有一种机制可以让我将日期强制到特定时区?我对它所做的研究表明没有。
否则,如果我需要更改服务器端,我最好的选择是什么?