2

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

这是我的代码。

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 和 cookie。

提前致谢。

4

7 回答 7

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;
    }
于 2014-09-01T10:57:27.997 回答
2

我通过使用以下方式做到了这一点:

  1. 我已经HiddenField进入了它需要的上一页:

    <asp:HiddenField ID="hdnTimeOffset" ClientIDMode="Static" runat="server" 
     Value="" />
    
  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);
    
于 2013-08-26T06:16:38.383 回答
0

母版页

设置服务器时间

<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;
于 2012-12-05T06:53:42.860 回答
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;
于 2014-01-29T03:53:40.423 回答
0

'有没有其他方法可以在我的任何页面中获取当前日期时间。我不想使用 Session 和 cookie。 在这种情况下,您可以使用 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>

但是,您可能希望阅读此 SO 线程以了解使用的最佳实践window.onload,或考虑使用jQuery及其document.ready

于 2012-12-05T06:31:50.390 回答
0

如果您使用的是 ASP.Net MVC,请使用以下代码

创建一个类“GetTime”。在本课程中,您将找到“埃及标准时间”,您可以从此处的列表中选择您的标准时区

public class GetTime{
        public static DateTime GetCurrentTime()
        {
            DateTime serverTime = DateTime.Now;
            DateTime _localTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(serverTime, TimeZoneInfo.Local.Id, "Egypt Standard Time");
            return _localTime;
        }
    }

并在 Global.asax 中添加“Application_Start()”中的行

GetTime.GetCurrentTime();

然后,当您需要时间时,您可以像这样编写代码

var localTime = GetTime.GetCurrentTime();
var mytimeVarialbe = localTime.Hour;

并且不要忘记导入课程

 using yourproject.Folderthatcontainclass
于 2021-09-15T09:24:27.000 回答
0

如何使用 C# 中的 CultureInfo 来获取它?

字符串 currentFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

这将在客户端返回“dd/MM/yy”或“dd/M/YYY”任何格式

于 2018-11-13T03:37:03.077 回答