Я хочу использовать на стороне клиента даты, которые находятся на стороне сервера.
например, если текущее время на стороне сервера равно «2011-09-21 15:00:00», я хочу иметь возможность получить объект javascript Date
с этим значением («15: 00: 00») , даже если клиент находится в другом часовом поясе.
что я пробовал до сих пор:
Предположим, что серверное время равно «15: 00: 00», а клиентское - «17: 00: 00». По какой-то причине объект Date
, который я получаю на стороне клиента, всегда содержит «16: 00: 00».
вот что я пробовал:
1. отправка объекта .net DateTime клиенту (он сериализуется как
"Date\12345...\"
), и на стороне клиента преобразует его в 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)
, оба из которых дали тот же результат, что и выше.
Должен ли я также отправить смещение часового пояса сервера и обработать разницу на стороне клиента?
Какой лучший способ это сделать?