我的母版页中有一个隐藏字段。我使用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,如
<asp:HiddenField ID="hdnCurrentDate" runat="server" />
我收到警告“hdnCurrentDate”未定义。这是因为我在页面加载中编写了代码而不是回发方法。
这是我实施的另一种方式。
我在后面的代码中使用了ConvertTimeBySystemTimeZoneId。这是相同的代码。
DateTime ClientDateTime = DateTime.Now;
DateTime _localTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(ClientDateTime, "Arab Standard Time");
return _localTime;
我没有获得目的地时区ID而不是“阿拉伯标准时间”。如果我能得到它,我的问题就会得到解决。
有没有其他方法可以在我的任何页面中获取当前日期时间。我不想使用Session和cookies。
提前致谢。
答案 0 :(得分:3)
以下是获取客户当前日期时间的javascript函数:
<script type="text/javascript">
function GetDate(date) {
CurTime = new Date(date);
var offset = (new Date().getTimezoneOffset() / 60) * (-1);
var utc = CurTime.getTime() + (offset * 60000 * (-1));
var serverDate = new Date(utc + (3600000 * offset));
var dateString = (serverDate.getMonth() + 1) + "/" + serverDate.getDate() + "/" +
serverDate.getFullYear() + " " + serverDate.toLocaleTimeString("en-US", { hour12: true });
}
</script>
您还可以从后面的代码中获取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 :(得分:2)
我是通过以下方式完成的:
我已将HiddenField
带到上一页所需的位置:
<asp:HiddenField ID="hdnTimeOffset" ClientIDMode="Static" runat="server"
Value="" />
然后,我得到了浏览器时区:
$(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);
答案 2 :(得分:0)
'有没有其他方法可以在我的任何页面中获取当前日期时间。我不想使用Session和cookies。' 在这种情况下你可以使用JavaScript
此外,您不需要使用RegisterStartupScript
。您只需在GetDate()
事件中调用onLoad
函数即可。
<script type="text/javascript">
window.onload = function(){
getDate();
};
function GetDate()
{
var dt = new Date();
var element = document.getElementById("MainContent_FormView1_Label1");
element.text = dt.toDateString();
}
</script>
但是,您可能需要阅读this SO thread了解使用window.onload
的最佳做法,或考虑使用jQuery及其document.ready
等框架
答案 3 :(得分:0)
母版页
设置servertime
<asp:hiddenfield runat="server" id="HiddenField1"></asp:hiddenfield>
protected void Page_Load(object sender, EventArgs e)
{
HiddenField1.Value = DateTime.Now.ToString();
}
设置客户端机器时间
<script type="text/javascript">
function setvalue() {
document.getElementById('HiddenField1').value = new Date();
}
</script>
<body onload="setvalue();">
<form id="form1" runat="server">
<div>
<asp:HiddenField ID="HiddenField1" runat="server"/>
</div>
</form>
</body>
内容页面
HiddenField hdnvalue = this.Master.Master.FindControl("HiddenField1") as HiddenField;
string currenttime=hdnvalue.Value;
答案 4 :(得分:0)
<script type="text/javascript">
function getDateTime()
{
var localTime = new Date();
var year= localTime.getYear();
var month= localTime.getMonth() +1;
var date = localTime.getDate();
var hours = localTime .getHours();
var minutes = localTime .getMinutes();
var seconds = localTime .getSeconds();
//at this point you can do with your results whatever you please
}
</script>
此时我将所有字段连接在一起并将它们放在asp:HiddenField控件中,以便可以在服务器上读取它们。在服务器上,在HiddenField的Text值上调用Convert.ToDateTime()。
如果您不使用母版页,请尝试使用。
HiddenField hdnFieldValue = (HiddenField)PreviousPage.FindControl("hdnField");
<强>更新强>
在页面上放置一个隐藏字段。
<asp:HiddenField ID="hidChild" runat="server"/>
在你的javascript函数中
var childHidden = document.getElementById('<%hidChild.ClientID%>');
childHidden.value = window.opener.document.getElementById('text1').value;
现在在页面加载事件上访问此隐藏控件。
Response.Write(hidChild.Value); or Session["ParentVal"]=hidChild.Value;
答案 5 :(得分:0)
如何使用C#中的CulturalInfo获取它?
string currentFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
这将以客户端中的任何格式返回“ dd / MM / yy”或“ dd / M / YYY”