【问题标题】:How to create a running current DateTime in a Label如何在标签中创建正在运行的当前日期时间
【发布时间】:2015-04-28 08:56:43
【问题描述】:

我对 ASP.net C# 非常陌生。我设法在线搜索如何在 C# 标签中显示当前日期。由于某种原因,Page_Load 需要在 web 表单中作为脚本实现,如果在代码隐藏中实现则不起作用。我的问题是时间只有在页面刷新时才会改变。我需要时间随着系统时间的变化而变化。请帮我。提前致谢。

这是我获取当前日期和时间的代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StaffTravelInterface.aspx.cs" Inherits="StaffTravel.StaffTravelInterface" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Now;
        string Day = dt.Day.ToString();
        string Month = dt.ToString("MMM");

        string Hour = dt.Hour.ToString();
        string Minute = dt.ToString("mm");
        timeNow.Text = Day + " " + Month + "   " + Hour + ":" + Minute;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <style type="text/css">
            #time
            {
                margin-top:-67px;
                float:right;
            }

            #main
            {
                position:static;
                max-width:100%;
            }

            #head
            {
                width:100%;
            }
        </style>

    <title></title>
</head>

<body>
    <form id="form1" runat="server">
        <div id="main">
            <div id="head" style="background-image:url('../Pics/Header.png'); background-repeat:no-repeat; height:100px">
            </div>

            <div id="time">
                <asp:Label ID="timeNow" runat="server" Text="" style="color:#fea171; font-family:Arial Black; font-weight:bold; font-size:32px"></asp:Label>
                &nbsp;
            </div>

            <div id="bg2">
                <img src="Pics/slide.png" style="width:100%; height:100%" />
            </div>
        </div>
    </form>
</body>
</html>

【问题讨论】:

  • 当然它会在页面加载或刷新时发生变化,因为它正在服务器上发生。你想显示服务器时间还是客户端时间??

标签: c# asp.net datetime webforms


【解决方案1】:

在表单中添加一个名为 Timer1 的新 Timer 控件,将时间间隔设置为 1000 (ms),然后双击 Timer 控件以编辑 Timer1_Tick 的代码隐藏。

<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="1000" />

它将定义计时器。 然后添加一个触发器。

<Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" />
    </Triggers>

然后添加以下脚本。

<script runat="server">
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        timeNow.Text = DateTime.Now.ToLongTimeString();
    }

</script>

【讨论】:

  • Timer1.Start();给我一个定义错误。它说“System.Web.UI.Timer”不包含启动定义。我什至无法在我的代码隐藏中添加“使用 System.Web.UI.Timer”,因为它不存在。请帮忙。
  • 我还必须添加一个“ScriptManager”。我现在遇到的问题是整个页面每 1000 毫秒刷新一次。有什么办法只能更新标签吗?
【解决方案2】:

找到我的答案。

我的脚本:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Now;
        string Day = dt.Day.ToString();
        string Month = dt.ToString("MMM");

        string Hour = dt.Hour.ToString();
        string Minute = dt.ToString("mm");
        string Seconds = dt.ToString("ss");
        timeNow.Text = Day + " " + Month + "   " + Hour + ":" + Minute + ":" + Seconds;
    }
</script>

我的代码:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <div id="main">
        <div id="head" style="background-image:url('../Pics/Header.png'); background-repeat:no-repeat; height:100px">

        </div>

        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                </Triggers>

                <ContentTemplate>
                    <asp:Label Id="timeNow" runat="server" style="color:#fea171; font-family:Arial Black; font-weight:bold; font-size:32px"></asp:Label>
                </ContentTemplate>
            </asp:UpdatePanel>

            <asp:Timer ID="Timer1" runat="server" Interval="1000">
            </asp:Timer>
        </div>

        <div id="bg2">
            <img src="Pics/slide.png" style="width:100%; height:100%" />
        </div>
    </div>
</form>

【讨论】:

    【解决方案3】:

    如果你想改变你的时间只在页面刷新时改变而不是使用 IsPostBack 事件

    <script runat="server">
           protected void Page_Load(object sender, EventArgs e)
            {
             if(!IsPostBack)
              {
               DateTime dt = DateTime.Now;
               string Day = dt.Day.ToString();
               string Month = dt.ToString("MMM");
    
               string Hour = dt.Hour.ToString();
               string Minute = dt.ToString("mm");
               timeNow.Text = Day + " " + Month + "   " + Hour + ":" + Minute;
              }
        }
          </script>
    

    希望它的工作。

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      相关资源
      最近更新 更多