C#简单的闹钟计时器,当用户设置完定时时间之后,如果到了设置的时间,该软件会自动进行提示。

代码可直接运行

C#计时器在日常生活中经常用到,比如短跑比赛需要计时等。制作了一个简单的闹钟计时器,当用户设置完定时时间之后,如果到了设置的时间,该软件会自动进行提示。

界面搭建如下:
在这里插入图片描述

运行界面如下:在这里插入图片描述

思路:

需要两个timer。
timer1用于计算剩余时间
timer2用于使闹钟显示的系统时间与当前系统时间保持一直
numericUpDown空间用于用户设定时间
用户第一次进入时,timer1不工作,当用户设定完时间,点击确定后,timer1开始计时工作。获取系统时间与用户设定的时间,求差值,并且判断用户设定的时间是当天的时间还是第二天的时间。
若是当天时间,直接用求得的差值就可以,若是用户输入的是第二天的时间,则用86400(一天有86400秒)减去两者之间的差

注意:

numericUpDown控制设置好最大值与最小值,小时最小值为0,最大值为23,分钟和秒的最大值是59,最小值是0

ateTime nowtime = Convert.ToDateTime(DateTime.Now.ToString());//获取当前系统时间
            DateTime endtime = Convert.ToDateTime(label1.Text.Trim().ToString());//获取用户设定的时间
            //求两个时间之间相差的秒数
            long dat1 = DateAndTime.DateDiff("s", nowtime, endtime, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);
            long dat=0;
            if (dat1 < 0)//如果两者相差的秒数小于0,说明此时设定的为第二天的时间
            {
                dat = dat1+86400;//一天共有86400秒,两者相差的秒数加上一天的秒数,得到当前系统时间与设定的第二天的时间相差的秒数(注意此时dat1 < 0,所以是dat1+86400)
                string color = "red";
              this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置文字颜色为红色
                label3.Text = ("闹钟已启动\n剩余" + dat + "秒");//提示剩余时间
                }

源代码:

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;
using Microsoft.VisualBasic;

namespace _5_5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)//界面运行时
        {
            this.Text = "闹钟计时器";//设置界面名称为“闹钟计时器”
            string hour = this.numericUpDown1.Value.ToString();//获取“时间定时”区域的小时
            string minute = this.numericUpDown2.Value.ToString();//获取“时间定时”区域的分钟
            string second = this.numericUpDown3.Value.ToString(); //获取“时间定时”区域的秒
            int hour1 = Convert.ToInt32(hour);//将string类型的小时转换为int型的小时
            int minute1 = Convert.ToInt32(minute);//将string类型的分钟转换为int型的分钟
            int second1 = Convert.ToInt32(second);//将string类型的秒转换为int型的秒
            string h = "";//定义小时为个位数的时候的补足位
            string m = "";//定义分钟为个位数的时候的补足位
            string s = "";//定义秒为个位数的时候的补足位
            if (hour1 < 10)//当小时为个位数的时候
            {
                h = "0";//将小时补足位设为0
            }
            if (minute1 < 10)//当分钟为个位数的时候
            {
                m = "0";//将分钟补足位设为0
            }
            if (second1 < 10)//当秒为个位数的时候
            {
                s = "0";//将秒补足位设为0
            }
            string color1 = "green";//定义颜色属性为绿色
            this.label1.ForeColor = System.Drawing.ColorTranslator.FromHtml(color1);//设置“时间定时”区域的label1的颜色为绿色
            label1.Text = (h+hour + ":" + m + minute + ":" + s + second);//输出“时间定时”区域的时间,显示在label1上
            string color = "blue";//定义颜色属性为蓝色
            this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置时钟未启动时的文字颜色为蓝色
            label3.Text = "闹钟未启动,\n请设置时间!";//提示用户当前闹钟未启动,暂未设置时间
            timer1.Stop();//此时timer1未启动,没有计时功能
        }
        private void button1_Click(object sender, EventArgs e)//确定按钮点击时,闹钟开始计时
        {
            string hour = this.numericUpDown1.Value.ToString();//获取“时间定时”区域的小时
            string minute = this.numericUpDown2.Value.ToString();//获取“时间定时”区域的分钟
            string second = this.numericUpDown3.Value.ToString();//获取“时间定时”区域的秒
            int hour1 = Convert.ToInt32(hour);//将string类型的小时转换为int型的小时
            int minute1 = Convert.ToInt32(minute);
            int second1 = Convert.ToInt32(second);
            string h = "";//定义小时为个位数的时候的补足位
            string m = "";//定义分钟为个位数的时候的补足位
            string s = "";//定义秒为个位数的时候的补足位
            if (hour1 < 10)//当小时为个位数的时候
            {
                h = "0";//将小时补足位设为0
            }
            if (minute1 < 10)//当小时为个位数的时候
            {
                m = "0";//将小时补足位设为0
            }
            if (second1 < 10)//当小时为个位数的时候
            {
                s = "0";//将小时补足位设为0
            }
            string color = "green";//设置颜色为绿色
            this.label1.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//此时将“时间定时”区域的label1的颜色设为绿色
            label1.Text = (h+hour + ":" +m+ minute + ":" +s+ second);//输出用户设定的时间
            timer1.Start();//timer1开始倒计时工作
        }
        private void timer1_Tick(object sender, EventArgs e)//timer1工作实现功能函数
        {
            string starhour = DateTime.Now.TimeOfDay.Hours.ToString();//获取系统当前时间的小时
            string starminute = DateTime.Now.TimeOfDay.Minutes.ToString();//获取系统当前时间的分钟
            string starsecond = DateTime.Now.TimeOfDay.Seconds.ToString();//获取系统当前时间的分钟
            //以下操作是为了输出当前系统时间,并且保证输出时间的小时,分钟和秒是两位数,此处不再赘述
            int hour1 = Convert.ToInt32(starhour);
            int minute1 = Convert.ToInt32(starminute);
            int second1 = Convert.ToInt32(starsecond);
            string m = "";
            string s = "";
            string h = "";
            if (hour1 < 10)
            {
                h = "0";
            }
            if (minute1 < 10)
            {
                m = "0";
            }
            if (second1 < 10)
            {
                s = "0";
            }
            string color1 = "green";
            this.label2.ForeColor = System.Drawing.ColorTranslator.FromHtml(color1);
            label2.Text = (h+starhour + ":" + m+starminute + ":" +s+ starsecond);//输出当前系统时间
            DateTime nowtime = Convert.ToDateTime(DateTime.Now.ToString());//获取当前系统时间
            DateTime endtime = Convert.ToDateTime(label1.Text.Trim().ToString());//获取用户设定的时间
            //求两个时间之间相差的秒数
            long dat1 = DateAndTime.DateDiff("s", nowtime, endtime, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);
            long dat=0;
            if (dat1 < 0)//如果两者相差的秒数小于0,说明此时设定的为第二天的时间
            {
                dat = dat1+86400;//一天共有86400秒,两者相差的秒数加上一天的秒数,得到当前系统时间与设定的第二天的时间相差的秒数
                string color = "red";
              this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置文字颜色为红色
                label3.Text = ("闹钟已启动\n剩余" + dat + "秒");//提示剩余时间
                if (dat == 0)//当剩余时间为0秒时
                {
                    timer1.Stop();//计时器停止工作
                    MessageBox.Show( "时间到");//提示用户时间到了
                }
            }
            else//若当前设定的时间晚于系统时间
            {
                string color = "red";
                this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置文字颜色为红色
                label3.Text = ("闹钟已启动\n剩余" + dat1 + "秒");//直接输出系统时间与用户设定的时间的差值
                if (dat1 == 0)//当剩余时间为0秒时
                {
                    timer1.Stop();//计时器停止工作
                    MessageBox.Show("时间到");//提示用户时间到了
                }
            }
        }

       
        private void timer2_Tick(object sender, EventArgs e)//用于获取系统时间,并且使输出的系统时间随使都是当前系统的时间
        {
            string starhour = DateTime.Now.TimeOfDay.Hours.ToString();
            string starminute = DateTime.Now.TimeOfDay.Minutes.ToString();
            string starsecond = DateTime.Now.TimeOfDay.Seconds.ToString();
            int minute = Convert.ToInt32(starminute);
            int second = Convert.ToInt32(starsecond);
            string m = "";
            string s = "";
            if (minute < 10)
            {
                m = "0";
            }
            if (second < 10)
            {
                s = "0";
            }
            string color = "green";
            this.label2.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);
            label2.Text = (starhour + ":" + m+starminute + ":" + s+starsecond);
        }

        private void button2_Click(object sender, EventArgs e)//取消按钮点击事件
        {
            timer1.Stop();//停止倒计时
            string color = "yellow";
            this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);
            label3.Text = "闹钟已暂停!";//提示用户已经停止计时
        }
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值