Как получить локальное время пользователя при загрузке страницы_Load

У меня есть веб-страница, написанная на 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#. Спасибо за ваши ответы/комментарии!

7
задан Nima Derakhshanjan 4 January 2015 в 16:31
поделиться