如何在asp.net中获取客户当前的日期和时间?

我的母版页中有一个隐藏字段。 我使用Javascript将当前日期和时间设置为“hiddenfield”中的值。 我无法在任何其他页面的页面加载方法中获取此隐藏字段值。

这是我的代码。

HiddenField hdnCurrentDate = (HiddenField)this.Master.FindControl("hdnCurrentDate"); ClientScript.RegisterClientScriptBlock(this.GetType(), "Message", "var CurrentDate = new Date(); $('#" + hdnCurrentDate.ClientID + "').val(CurrentDate);alert($('#ctl00_hdnCurrentDate').val());", true); 

我在主页中定义了Hiddenfield

  

我得到了“hdnCurrentDate”的警报未定义。 这是因为我在页面加载中编写了代码而不是回发方法。

这是我实施的另一种方式。

我在后面的代码中使用了ConvertTimeBySystemTimeZoneId。 这是相同的代码。

 DateTime ClientDateTime = DateTime.Now; DateTime _localTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(ClientDateTime, "Arab Standard Time"); return _localTime; 

我没有获得目的地时区ID而不是“阿拉伯标准时间”。 如果我能得到它,我的问题将得到解决。

有没有其他方法可以在我的任何页面中获取当前日期时间。 我不想使用Session和cookies。

提前致谢。

以下是获取客户当前日期时间的javascript函数:

  

您还可以从后面的代码中获取OffSet Time,如下所示:

 public static TimeSpan GetOffSetTime(string date) { DateTime d = Convert.ToDateTime(date); TimeZone zone = TimeZone.CurrentTimeZone; TimeSpan local = zone.GetUtcOffset(d); return local; } 

我是通过以下方式完成的:

  1. 我已将HiddenField带入上一页,它需要:

      
  2. 然后,我通过这个获得浏览器时区:

     $(document).ready(function () { var offset = new Date().getTimezoneOffset(); $('#hdnTimeOffset').val(offset); }); 
  3. 我将时区转换为上一页的Session变量,然后重定向到下一页,如点击按钮:

     protected void btn_Click(object sender, EventArgs e) { Session["TimeOffset"] = hdnTimeOffset.Value; Response.Redirect("~/Root/abc.aspx"); } 
  4. 在主页面中,我使用以下代码获取当前时间:

     DateTime dtmCurrentDateTime = DateTime.Now.ToUniversalTime(); double dblMinutes =Convert.ToDouble(Session["TimeOffset"].ToString()); dtmCurrentDateTime = dtmCurrentDateTime.AddMinutes(-dblMinutes); 

‘有没有其他方法可以在我的任何页面中获取当前日期时间。 我不想使用Session和cookies。 在这种情况下,您可以使用JavaScript

此外,您不需要使用RegisterStartupScript 。 您可以在onLoad事件中调用GetDate()函数。

  

但是,您可能希望阅读此SO线程以获取使用window.onload最佳实践,或者考虑使用诸如jQuery及其document.ready类的框架。

主页

设置servertime

  protected void Page_Load(object sender, EventArgs e) { HiddenField1.Value = DateTime.Now.ToString(); } 

设置客户端机器时间

    

内容页

 HiddenField hdnvalue = this.Master.Master.FindControl("HiddenField1") as HiddenField; string currenttime=hdnvalue.Value; 

来自此链接的修改代码:

  

此时,我将所有字段连接在一起并将它们放在asp:HiddenField控件中,以便可以在服务器上读取它们。 在服务器上,在HiddenField的Text值上调用Convert.ToDateTime()。

如果你不使用母版页,你应该试试这个。

 HiddenField hdnFieldValue = (HiddenField)PreviousPage.FindControl("hdnField"); 

更新:

在页面上放置一个隐藏字段。

  

在你的JavaScript函数中

  var childHidden = document.getElementById('<%hidChild.ClientID%>'); childHidden.value = window.opener.document.getElementById('text1').value; 

现在访问页面加载事件的这个隐藏控件。

 Response.Write(hidChild.Value); or Session["ParentVal"]=hidChild.Value;