У меня есть веб-страница, написанная на ASP.NET, и мне нужно получить локальное время конечного пользователя. время в Page_Load
. Я думал об использовании Javascript для получения местного времени (с помощью new Date()
), но проблема в том, что скрипт запускается после событий сервера.
Есть идеи, как это сделать?
РЕДАКТИРОВАТЬ:Моя страница довольно сложная:она отображает диаграмму с большим количеством вычисляемых полей из базы данных, списков выбора объектов/полей и т.д.; Теперь клиент запросил, чтобы он учитывал часовой пояс пользователя и чтобы часовой пояс автоматически определялся веб-страницей. Дата пользователя важна для определения интервала графика (, в который день отображать данные). Загрузка данных (, так как это очень сложно), выполняется как в Page_Load
, так и в Page_PreRender
. Отказ от этих событий потребует полной перезаписи страницы.
ОКОНЧАТЕЛЬНОЕ РЕШЕНИЕ, ВДОХНОВЛЕННОЕ ОТВЕТОМ:Вот как я решил проблему в конечном итоге. Я сохраняю локальную дату в файле cookie. Вот метод, который устанавливает cookie:
function SetLocalDateCookie() {
var cookieName = 'LOCALDATE';
var localDate = new Date();
var realMonth = localDate.getMonth() + 1;
var localDateString = localDate.getFullYear() + "/" + realMonth + "/" + localDate.getDate();
setCookie(cookieName, localDateString, 2);
try {
var exdate = new Date();
exdate.setDate(exdate.getDate() + 2);
document.cookie = cookieName + "=" + escape(localDateString) + ";expires=" + exdate.toGMTString();
}
catch (e)
{ }
}
На моей главной странице я вызываю этот метод на $(document).ready
. На странице, где я использую этот файл cookie, я добавил следующий код в Page_Init
:
if (string.IsNullOrEmpty(CookieHandler.Instance.GetCookie(CookieKeys.LocalDate)))
{
Response.ClearContent();
Response.Write(@"<form id='local' method='post' name='local'>
<script type='text/javascript'>
SetLocalDateCookie();
document.getElementById('local').submit();
</script>
</form>");
Response.Flush();
Response.End();
}
. Затем я могу просто использовать значение файла cookie в коде C#. Спасибо за ваши ответы/комментарии!