欢迎使用CSDN-markdown编辑器

来源:互联网 发布:大乐透真假揭秘知乎 编辑:程序博客网 时间:2024/06/05 14:13

winform程序中有关时间差的计算

将第一个得到的时间进行保存,然后得到第二个时间,将两者都转换为秒数,做差,然后将秒数转换为时间

  • 将得到的时间保存在静态类中
 /// <summary>        /// 将当前的事件字符串赋值给静态类中的属性        /// </summary>        public void getTime()        {            string hourString = DateTime.Now.Hour.ToString();            string minuteString = DateTime.Now.Minute.ToString();            string secondString = DateTime.Now.Second.ToString();            DateClass.Hour = hourString;            DateClass.Minute = minuteString;            DateClass.Second = secondString;        }
  • 将获取的事件转换为秒,再与之前的事件秒数做差得到int再将int转换为时间
/// <summary>       /// 方法1:将获取的事件转换为秒,再与之前的事件秒数做差得到int再将int转换为时间       /// </summary>       /// <param name="sender"></param>       /// <param name="e"></param>        private void timer1_Tick(object sender, EventArgs e)        {            //每一秒执行这个显示时间            label1.Text = DateTime.Now.ToString();            //提示到时间了            if (DateTime.Now.Hour - Convert.ToInt32(DateClass.Hour) == 2 && DateTime.Now.Minute - Convert.ToInt32(DateClass.Minute) == 0 && DateTime.Now.Second - Convert.ToInt32(DateClass.Second) == 0)            {                MessageBox.Show("程序虽好,但也要休息!");                label2.Text="";                DateClass.Hour = null;                DateClass.Minute = null;                DateClass.Second = null;                getTime();            }            else            {                int hour = Convert.ToInt32(DateTime.Now.Hour);                int minute = Convert.ToInt32(DateTime.Now.Minute);                int second = Convert.ToInt32(DateTime.Now.Second);                string time = hour+":"+minute+":"+second;                DateTime dt = Convert.ToDateTime(time);                int timeNowAll = ((dt.Hour) * 3600) + ((dt.Minute) * 60) + (dt.Second);                int hourB = Convert.ToInt32(DateClass.Hour);                int minuteB = Convert.ToInt32(DateClass.Minute);                int secondB = Convert.ToInt32(DateClass.Second);                string timeB = hourB + ":" + minuteB + ":" + secondB;                DateTime dtB = Convert.ToDateTime(timeB);                int timeAllB = ((dtB.Hour) * 3600) + ((dtB.Minute) * 60) + (dtB.Second);                int timeSub = timeNowAll - timeAllB;                TimeSpan ts = new TimeSpan(0, 0, timeSub);                label2.Text = "距离上次休息时间为"+(int)ts.TotalHours + "小时" + ts.Minutes + "分钟" + ts.Seconds + "秒";            }        }
  • 静态类DateClass
public static class DateClass    {        public static string Hour { get; set; }        public static string Minute { get; set; }        public static string Second { get; set; }    }

以上是最简单的有关于时间求差转时间方法,稍后再改进算法