Я немного объясню следующий код и то, что вам нужно сделать.
При первом запросе с этой страницы код проверяет, не сохранен ли LocalTime в сеансе, и если нетнапишет элемент формы, скрытый ввод и JavaScript, который опубликует эту форму с местным временем.Ответ заканчивается, поэтому ваш отчет не будет сгенерирован.
Эта отправка немедленно создаст запрос POST с установленным localTime, а затем ASP .Net сохранит это значение POST в сеансе.
Я также добавил перенаправление 302 (Response.Redirect) на исходную страницу из-за удобства использования.Пользователь первоначально сделал запрос GET, а не POST, поэтому, если он / она хочет обновить страницу, браузер будет повторять последнее действие, которое было этим form.submit (), а не запросом GET.
У вас сейчас местное время.Но вам не нужно читать его при каждом запросе, поскольку его можно сравнить с временем UTC, а затем со временем сервера.
edit: Вам необходимо проанализировать время UTC вa DateTime, но, вероятно, легко найти формат, хотя может зависеть от культуры пользователя (не уверен насчет этого утверждения).
public ReportPage()
{
this.Init += (o, e) =>
{
// if the local time is not saved yet in Session and the request has not posted the localTime
if (Session["localTime"] == null && String.IsNullOrEmpty(Request.Params["localTime"]))
{
// then clear the content and write some html, a javascript code which submits the local time
Response.ClearContent();
Response.Write(@"<form id='local' method='post' name='local'>
<input type='hidden' id='localTime' name='localTime' />
<script type='text/javascript'>
document.getElementById('localTime').value = new Date();
document.getElementById('local').submit();
</script>
</form>");
//
Response.Flush();
// end the response so PageLoad, PagePreRender etc won't be executed
Response.End();
}
else
{
// if the request contains the localtime, then save it in Session
if (Request.Params["localTime"] != null)
{
Session["localTime"] = Request.Params["localTime"];
// and redirect back to the original url
Response.Redirect(Request.RawUrl);
}
}
};
}