【问题标题】:Resetting a countdown to date timer to another date when it ends将倒计时日期计时器重置为另一个日期,当它结束时
【发布时间】:2015-11-17 14:28:18
【问题描述】:

好的,所以我想做的是倒计时结束时,这意味着达到我在 2 天内将其放入的 endTime,我想重置并再增加 7 天,并尽可能继续这样做。我试过使用

if(endTime.Subtract(DateTime.Now) = 0)
        {

        }

但这给了我一个错误“赋值的左侧必须是变量、属性或索引器”,并且还使用 .ToString() 方法将 ts 转换为字符串,但这仍然不起作用!所有代码均取自here 我想在那里发表评论,但我是新用户。在此先感谢您,我想我已经涵盖了所有内容,请在投反对票之前提出任何要求!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TV_Series_New_Episodes
{
public partial class Flash : Form
{
    DateTime endTime = new DateTime(2015, 11 ,19, 14 ,30, 0);

    public Flash()
    {
        InitializeComponent();
    }

    private void ct_Tick(object sender, EventArgs e)
    {
        TimeSpan ts = endTime.Subtract(DateTime.Now);
        ctlb.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
        if(endTime.Subtract(DateTime.Now) = 0)
        {

        }
    }

    private void Flash_Load(object sender, EventArgs e)
    {


        ct.Interval= 500;
        ct.Tick += new EventHandler(ct_Tick);
        TimeSpan ts = endTime.Subtract(DateTime.Now);
        ctlb.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
        ct.Start();
    }
}
}

【问题讨论】:

    标签: c# datetime countdown timespan


    【解决方案1】:

    有两个问题:

    = 是赋值运算符。如果要比较,请使用==

    您无法将TimeSpanìnt 进行比较。使用TimeSpanTotalDays 属性来获取一个数字。或者直接使用参数。

    最后,您的程序可能无法准确命中endTime。所以你应该允许一些宽容:

    if(endTime <= DateTime.Now)
    {
    
    }
    

    【讨论】:

    • DateTime 没有 TotalDays 属性 TimeSpan 如果这就是你的意思,我仍然需要一些指导,如果我提到我尝试使用 ts.TotalDays == endTime 但它不会接受,我应该替换什么操作员。
    • 哦,你是对的。只需使用if(endTime &lt;= DateTime.Now) 或者如果你真的想要if(endTime == DateTime.Now)
    • Falcon,TotalDays 只是一个 double,不能与 DateTime 相比。如果您真的希望 endTime 等于 DateTime.Now(精确到毫秒),您需要执行 if (endTime.Subtract(DateTime.Now).TotalSeconds == 0)。如果您真的关心 endTime 是在 Now 之后的任何时间,请按照 Nico 的建议执行 if (endTime
    • @NicoSchertler 我很笨......if(endtime&lt;= DateTime.Now) 工作完美,非常感谢您的帮助和宽容!
    • @NicoSchertler 哦还有一件事我忘了,我已经为(2015, 11 ,19, 14 ,30, 0) 的日期分配了一些值我如何在if(endTime &lt;= DateTime.Now) 中进行编辑?
    【解决方案2】:

    只是为了补充 Nico 的答案,endTime.Subtract(DateTime.Now) 返回一个具有 TotalTimeUnit 属性的 TimeSpan 对象(不是 DateTime)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多