You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
3.7 KiB
C++
163 lines
3.7 KiB
C++
#include "StdAfx.h"
|
|
#include "WorkTime.h"
|
|
#include "PciCh365Mgr.h"
|
|
|
|
CWorkTime gWorkTime;
|
|
CWorkTime::CWorkTime(void)
|
|
{
|
|
m_bRecordTime = false;//是否正在计时
|
|
m_LastWorkTime = "上次时间:";
|
|
}
|
|
CWorkTime::~CWorkTime(void)
|
|
{
|
|
}
|
|
CString CWorkTime::Time2Str(int n)
|
|
{
|
|
CString s;
|
|
if(n<10)
|
|
s.Format("0%ld",n);//左边补0
|
|
else
|
|
s.Format("%ld",n);
|
|
return s;
|
|
}
|
|
#if 1//粗略计时
|
|
//开始计时
|
|
void CWorkTime::StartRecordTime()
|
|
{
|
|
m_bRecordTime = true;
|
|
m_StartTime=CTime::GetCurrentTime();
|
|
}
|
|
void CWorkTime::StopRecordTime()
|
|
{
|
|
m_bRecordTime = false;
|
|
}
|
|
CString CWorkTime::GetTimeSpanStr()
|
|
{
|
|
if(!m_bRecordTime)
|
|
return "00:00:00";
|
|
|
|
//获取当前系统时间
|
|
CTime CurTime;
|
|
CTimeSpan TimeSpan;//时间差
|
|
CurTime=CTime::GetCurrentTime();
|
|
TimeSpan = CurTime - m_StartTime;
|
|
return GetTimeSpanStr(TimeSpan);
|
|
}
|
|
CTimeSpan CWorkTime::GetTimeSpan()
|
|
{
|
|
//获取当前系统时间
|
|
CTime CurTime;
|
|
CTimeSpan TimeSpan;//时间差
|
|
CurTime=CTime::GetCurrentTime();
|
|
TimeSpan = CurTime - m_StartTime;
|
|
return TimeSpan;
|
|
}
|
|
//获取当前经过时间
|
|
CString CWorkTime::GetTimeSpanStr(CTimeSpan &TimeSpan)
|
|
{
|
|
return Time2Str(TimeSpan.GetHours())+":"+Time2Str(TimeSpan.GetMinutes())+":"+Time2Str(TimeSpan.GetSeconds());
|
|
}
|
|
CString CWorkTime::GetCurDate(CString Separator)
|
|
{
|
|
CString str;
|
|
CTime CurTime;
|
|
CurTime=CTime::GetCurrentTime();
|
|
|
|
str += Time2Str(CurTime.GetYear())+Separator;
|
|
str += Time2Str(CurTime.GetMonth())+Separator;
|
|
str += Time2Str(CurTime.GetDay());
|
|
|
|
return str;
|
|
}
|
|
//获取当前时间Separator 为分隔符
|
|
CString CWorkTime::GetCurTime(CString Separator)
|
|
{
|
|
CString str;
|
|
CTime CurTime;
|
|
CurTime=CTime::GetCurrentTime();
|
|
|
|
str += Time2Str(CurTime.GetHour())+Separator;
|
|
str += Time2Str(CurTime.GetMinute())+Separator;
|
|
str += Time2Str(CurTime.GetSecond());
|
|
|
|
return str;
|
|
}
|
|
//当前经过了多少分钟
|
|
int CWorkTime::GetTimeSpanMin(CTimeSpan &TimeSpan)
|
|
{
|
|
int m = 0;
|
|
m += TimeSpan.GetHours() * 60;
|
|
m += TimeSpan.GetMinutes();
|
|
return m;
|
|
}
|
|
//记录最近一次运行时间
|
|
void CWorkTime::SaveLastWorkTime()
|
|
{
|
|
m_LastWorkTime = "上次时间:" + GetTimeSpanStr();
|
|
}
|
|
#endif
|
|
#if 1//精确计时
|
|
//开始精确计时
|
|
void CWorkTime::StartExactTime()
|
|
{
|
|
QueryPerformanceCounter(&m_ExactStart);
|
|
}
|
|
//获取精确时间,单位是ms
|
|
int CWorkTime::GetExactTime()
|
|
{
|
|
LARGE_INTEGER EndTime;
|
|
QueryPerformanceCounter(&EndTime);
|
|
|
|
int ret = ((EndTime.QuadPart - m_ExactStart.QuadPart)*1000)/(gPciCh365Mgr->GetClockFre().QuadPart);
|
|
return ret;
|
|
}
|
|
#endif
|
|
#if 1//倒计时功能
|
|
//当前经过了多少秒
|
|
double CWorkTime::GetTimeSpanSecond()
|
|
{
|
|
CTimeSpan TimeSpan = GetTimeSpan();
|
|
int s = 0;
|
|
s += TimeSpan.GetHours() * 60 * 60;
|
|
s += TimeSpan.GetMinutes() * 60;
|
|
s += TimeSpan.GetSeconds();
|
|
return s;
|
|
}
|
|
//开始倒计时
|
|
void CWorkTime::StartBackTime(double s)
|
|
{
|
|
m_BackTimeSeconds = s;
|
|
StartRecordTime();
|
|
}
|
|
//获取还剩多少时间
|
|
CString CWorkTime::GetLeftTimes()
|
|
{
|
|
double CurSeconds = GetTimeSpanSecond();//当前经过的秒数
|
|
int LeftSeconds = (int)(m_BackTimeSeconds-CurSeconds);
|
|
CString str = "00:00:00";
|
|
if(LeftSeconds>0)
|
|
{
|
|
int Seconds = LeftSeconds % 60;
|
|
LeftSeconds -= Seconds;
|
|
int Minutes = (LeftSeconds%3600)/60;
|
|
LeftSeconds -= Minutes*60;
|
|
int Hours = LeftSeconds/3600;
|
|
str = Time2Str(Hours)+":"+Time2Str(Minutes)+":"+Time2Str(Seconds);
|
|
}
|
|
return str;
|
|
}
|
|
//倒计时是否结束
|
|
bool CWorkTime::IsBackTimeEnd()
|
|
{
|
|
if(!m_bRecordTime)//已经结束
|
|
return true;
|
|
|
|
double CurSeconds = GetTimeSpanSecond();//当前经过的秒数
|
|
if(CurSeconds > m_BackTimeSeconds)
|
|
{
|
|
m_bRecordTime = false;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
#endif |