我想在客户端使用与服务器端相同的日期。
例如,如果当前时间在服务器端是'2011-09-21 15:00:00',我希望能够得到一个javascript Date
对象与该值('15:00:00'),即使客户端是在不同的时区。
到目前为止我所尝试的:
假设服务器时间为'15:00:00',客户端时间为'17:00:00',由于某种原因,我在客户端得到的Date
对象总是包含'16:00:00'。
以下是我尝试过的:
1. 发送。net DateTime对象到客户端(它被序列化为"Date12345..."
),并在客户端将其转换为Date
对象:
function parseServerDate(strDate) {
return new Date(parseInt(strDate.substr(6)));
}
或将。net DateTime
对象转换为UTC数字:
// returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates)
public static double UnixTicks(this DateTime dateTime)
{
DateTime epoch = new DateTime(1970, 1, 1);
DateTime d2 = dateTime.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - epoch.Ticks);
return ts.TotalMilliseconds;
}
,然后创建新的Date
对象:new Date(milliseconds)
或new Date().setTime(milliseconds)
,两者都产生了与上面相同的结果。
我是否应该发送服务器的时区偏移量,并处理客户端的差异?
最好的办法是什么?
如果它是关于显示的,为什么需要Date对象客户端?为什么不简单地让服务器将datetime作为字符串发送,然后让客户机按原样显示呢?