如何在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; }
我是通过以下方式完成的:
-
我已将
HiddenField
带入上一页,它需要: -
然后,我通过这个获得浏览器时区:
$(document).ready(function () { var offset = new Date().getTimezoneOffset(); $('#hdnTimeOffset').val(offset); });
-
我将时区转换为上一页的
Session
变量,然后重定向到下一页,如点击按钮:protected void btn_Click(object sender, EventArgs e) { Session["TimeOffset"] = hdnTimeOffset.Value; Response.Redirect("~/Root/abc.aspx"); }
-
在主页面中,我使用以下代码获取当前时间:
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;