C#使用DateTime.Now

时间:2018-01-10 21:55:15

标签: c# time

当用户点击Punch In然后Punch Out时,我试图创建一个简单的时间计算器。我使用DateTime.Now为每个人创建了变量,以捕获用户打入和跳出的实际时间。我还创建了一个用于打卡的按钮,以及一个用于打卡的单独按钮。出于某种原因,当我点击Punch In,然后等待一两分钟进行测试时,当我点击Punch Out时,Punch Out会显示与Punch In相同的时间。我究竟做错了什么? 以下是代码:

 public partial class Form1 : Form
    {
        DateTime startTime = DateTime.Now;
        DateTime stopTime = DateTime.Now;

        public Form1()
        {
            InitializeComponent();
        }

        private void btnPunchIn_Click(object sender, EventArgs e)
        {          
            string punchIn = startTime.ToShortTimeString();
            lblPunchInTime.Text = punchIn.ToString();
        }

        private void btnPunchOut_Click(object sender, EventArgs e)
        {

            string punchOut = stopTime.ToShortTimeString();
            TimeSpan timeWorked = new TimeSpan();
            lblPunchOutTime.Text = punchOut.ToString();
            timeWorked = stopTime - startTime;
            lblTimeWorked.Text = timeWorked.ToString();
        }
    }

3 个答案:

答案 0 :(得分:1)

您设置stopTime的唯一时间是创建表单时(位于Form类的顶部)。所以它总是等于那个时间。

我认为您的意思是在点击按钮时设置stopTime = DateTime.Now。类似的交易startTime

答案 1 :(得分:1)

在构建startTime实例时,您只需为stopTimeForm1分配一次值。并且它们都被分配(几乎)相同的时间值,这是当前的当地时间。

答案 2 :(得分:1)

初始化类时,您将开始和结束时间设置为DateTime.Now。如果你在事件处理程序中设置它们,你应该全部设置。