|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
#include "WorkTime.h"
|
|
|
|
|
#include "PciCh365Mgr.h"
|
|
|
|
|
|
|
|
|
|
CWorkTime gWorkTime;
|
|
|
|
|
CWorkTime::CWorkTime(void)
|
|
|
|
|
{
|
|
|
|
|
m_bRecordTime = false;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڼ<EFBFBD>ʱ
|
|
|
|
|
m_LastWorkTime = "<EFBFBD>ϴ<EFBFBD>ʱ<EFBFBD><EFBFBD>:";
|
|
|
|
|
}
|
|
|
|
|
CWorkTime::~CWorkTime(void)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
CString CWorkTime::Time2Str(int n)
|
|
|
|
|
{
|
|
|
|
|
CString s;
|
|
|
|
|
if(n<10)
|
|
|
|
|
s.Format("0%ld",n);//<2F><><EFBFBD>߲<EFBFBD>0
|
|
|
|
|
else
|
|
|
|
|
s.Format("%ld",n);
|
|
|
|
|
return s;
|
|
|
|
|
}
|
|
|
|
|
#if 1//<2F><><EFBFBD>Լ<EFBFBD>ʱ
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC>ʱ
|
|
|
|
|
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";
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰϵͳʱ<CDB3><CAB1>
|
|
|
|
|
CTime CurTime;
|
|
|
|
|
CTimeSpan TimeSpan;//ʱ<><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
CurTime=CTime::GetCurrentTime();
|
|
|
|
|
TimeSpan = CurTime - m_StartTime;
|
|
|
|
|
return GetTimeSpanStr(TimeSpan);
|
|
|
|
|
}
|
|
|
|
|
CTimeSpan CWorkTime::GetTimeSpan()
|
|
|
|
|
{
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰϵͳʱ<CDB3><CAB1>
|
|
|
|
|
CTime CurTime;
|
|
|
|
|
CTimeSpan TimeSpan;//ʱ<><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
CurTime=CTime::GetCurrentTime();
|
|
|
|
|
TimeSpan = CurTime - m_StartTime;
|
|
|
|
|
return TimeSpan;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>Separator Ϊ<>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6>ٷ<EFBFBD><D9B7><EFBFBD>
|
|
|
|
|
int CWorkTime::GetTimeSpanMin(CTimeSpan &TimeSpan)
|
|
|
|
|
{
|
|
|
|
|
int m = 0;
|
|
|
|
|
m += TimeSpan.GetHours() * 60;
|
|
|
|
|
m += TimeSpan.GetMinutes();
|
|
|
|
|
return m;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
void CWorkTime::SaveLastWorkTime()
|
|
|
|
|
{
|
|
|
|
|
m_LastWorkTime = "<EFBFBD>ϴ<EFBFBD>ʱ<EFBFBD><EFBFBD>:" + GetTimeSpanStr();
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if 1//<2F><>ȷ<EFBFBD><C8B7>ʱ
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC>ȷ<EFBFBD><C8B7>ʱ
|
|
|
|
|
void CWorkTime::StartExactTime()
|
|
|
|
|
{
|
|
|
|
|
QueryPerformanceCounter(&m_ExactStart);
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ȷʱ<C8B7><CAB1>,<2C><>λ<EFBFBD><CEBB>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//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
double CWorkTime::GetTimeSpanSecond()
|
|
|
|
|
{
|
|
|
|
|
CTimeSpan TimeSpan = GetTimeSpan();
|
|
|
|
|
int s = 0;
|
|
|
|
|
s += TimeSpan.GetHours() * 60 * 60;
|
|
|
|
|
s += TimeSpan.GetMinutes() * 60;
|
|
|
|
|
s += TimeSpan.GetSeconds();
|
|
|
|
|
return s;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
void CWorkTime::StartBackTime(double s)
|
|
|
|
|
{
|
|
|
|
|
m_BackTimeSeconds = s;
|
|
|
|
|
StartRecordTime();
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
CString CWorkTime::GetLeftTimes()
|
|
|
|
|
{
|
|
|
|
|
double CurSeconds = GetTimeSpanSecond();//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
bool CWorkTime::IsBackTimeEnd()
|
|
|
|
|
{
|
|
|
|
|
if(!m_bRecordTime)//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
double CurSeconds = GetTimeSpanSecond();//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(CurSeconds > m_BackTimeSeconds)
|
|
|
|
|
{
|
|
|
|
|
m_bRecordTime = false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
#endif
|