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; }
}