【问题标题】:Show "Time Left" from a set date to now显示从设定日期到现在的“剩余时间”
【发布时间】:2013-07-07 04:28:43
【问题描述】:

我有一个应用程序,当发生特定操作时,使用 Visual studion 配置管理器将确切的 DATE/TIME 写入 myTime,您可以在其中添加设置。

这是我的设置:Properties.Settings.Default.voteTime

我希望我的应用程序开始显示一个标签,该标签将显示“距离下一个投票请求还剩 X 时间”

在我的上下文中,投票必须每 12 小时进行一次,所以

我希望标签基本上显示这 12 个还剩多少时间 小时,从我上面提到的 voteTime 开始。

我尝试了很多技术,但我是 C# 的菜鸟,没有人为我工作,每次标签要么有他的默认文本,要么是空白的......

        DateTime voteTime = Properties.Settings.Default.voteTime;
        DateTime startDate = DateTime.Now;

        //Calculate countdown timer.
        TimeSpan t = voteTime - startDate;
        string countDown = string.Format("{0} Days, {1} Hours, {2} Minutes, {3} Seconds til launch.", t.Days, t.Hours, t.Minutes, t.Seconds);

以上,这就是我尝试过的,然后我写了 label1.text = countDown;

提前致谢。

【问题讨论】:

  • 您应该将您的帖子改写为问题而不是规范。这不是一个代码请求站点。

标签: c# time timer countdown elapsed


【解决方案1】:

怎么做:

您可以使用System.Windows.Forms.Timer 类继续显示您的剩余时间。您可以按以下步骤进行:

创建并初始化一个计时器:

Timer timer1 = new Timer();

创建其tick事件方法并设置间隔更新显示时间:

timer1.Tick += timer1_Tick;
timer1.Interval = 1000; //i am setting it for one second

现在开始计时:

timer1.Enabled = true;
timer1.Start();

创建timer.tick事件方法并每秒更新标签:

void timer1_Tick(object sender, EventArgs e)
{
    TimeSpan TimeRemaining = VoteTime - DateTime.Now;
    label1.Text = TimeRemaining.Hours + " : " + TimeRemaining.Minutes + " : " + TimeRemaining.Seconds;
}

完整代码:

这是完整的代码。您可以复制并粘贴它:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Tick += timer1_Tick;
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();
        }

        Timer timer1 = new Timer();

        void timer1_Tick(object sender, EventArgs e)
        {
            TimeSpan TimeRemaining = VoteTime - DateTime.Now;
            label1.Text = TimeRemaining.Hours + " : " + TimeRemaining.Minutes + " : " + TimeRemaining.Seconds;
        }

【讨论】:

  • 谢谢,我可以自己制作,但只有小问题,我也必须让它检测几天。因为假设您在 7 月 7 日晚上 9 点投票,它只会显示 3 小时...
  • @Dan15 只需将TimeRemaining = VoteTime - DateTime.Now; 更改为TimeRemaining = VoteTime.AddHours(12) - DateTime.Now;
【解决方案2】:

这是一个简单的方法,使用计时器控件,每分钟更新一次标签:

    TimeSpan TimeLeft = new TimeSpan();
    DateTime voteTime = Properties.Settings.Default.voteTime;      
    public Form3()
    {
        InitializeComponent();
        TimeLeft = voteTime - DateTime.Now;
        label1.Text = TimeLeft.ToString(@"hh\:mm") + " til launch.";
        //This value is in milliseconds.  Adjust this for a different time 
        //interval between updates
        timer1.Interval = 60000;
        timer1.Start();
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        TimeLeft = voteTime - DateTime.Now;
        label1.Text = TimeLeft.ToString(@"hh\:mm") + " til launch.";
    }

【讨论】:

  • 非常感谢,但我已更新此代码以匹配我的应用程序,并且计时器显示 23:59 或 00:00 剩余时间...例如,我希望它显示 06:以 10 为例。
  • 您的意思是您希望目标时间为 voteTime 之后的 12 小时吗?如果是这样,请使用voteTime.AddHours(12.0) - DateTime.Now
  • 是的,在投票后,从 12 小时开始倒计时,然后倒计时……显示还剩多少时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 2014-08-14
相关资源
最近更新 更多