新萄京操作系统

 新萄京操作系统     |      2020-02-01

CString CTimeProc::SplitTimeToMonth(CString strTime)
{
 strTime.Delete(0,5);
 if(strTime.GetAt(1)=='-')
 {
  strTime.Delete(1,strTime.GetLength()-1);
  return strTime;
 }
 else
 {
  strTime.Delete(2,strTime.GetLength()-2);
  return strTime;
 }
}

int main()
{
clock_t start_time=clock();

CString CTimeProc::SplitTimeToDay(CString strTime)
{
 if(strTime.GetAt(6)=='-')
 {
  strTime.Delete(0,7);
 }
 else
 {
  strTime.Delete(0,8);
 }
 if(strTime.GetAt(1)==' ')
 {
  strTime.Delete(1,strTime.GetLength()-1);
  return strTime;
 }
 else
 {
  strTime.Delete(2,strTime.GetLength()-2);
  return strTime;
 }
}

DWORD Subtime = (end_time-start_time);

CString CTimeProc::GetCurtTime()
{
//利用windowsAPI函数
 SYSTEMTIME sys; 
 GetLocalTime(&sys);
 CString str;
 str.Format("%d-%d-%d %d:%d:%d",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond);
 //把当前时间赋值给成员变量
 m_nYear=sys.wYear;
 m_nMonth=sys.wMonth;
 m_nDay=sys.wDay;
 m_nHour=sys.wHour;
 m_nMinute=sys.wMinute;
 m_nSecond=sys.wSecond;
 return str;
}
//时间格式为"dddd-dd-dd dd:dd:dd"
CString CTimeProc::SplitTimeToYear(CString strTime)
{
 strTime.Delete(4,strTime.GetLength()-4);
 return strTime;
}

如何在VC6.0中得到一个程序的运行时间,也就是这个程序耗费的时钟周期数// C和C++的时间编程
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
time_t begin,end;
begin=clock();
//这里加上你的代码
end=clock();
cout<<"runtime: "<<double(end-begin)/CLOCKS_PER_SEC<<endl;
}

int CTimeProc::ChangCStringToInt(CString strNumber)
{
 long len,temp,k,result;
 len=strNumber.GetLength();
 k=0;
 result=0;
 while(len>=1)
 {
  temp=(long)(strNumber.GetAt(k)-48);
  for(int i=1;i<len;i++)
   temp=temp*10;
  result=result+temp;
  k++;
  len--;
 }
 return result;
}

转自:

CString CTimeProc::SplitTimeToHour(CString strTime)
{
 int strlen=strTime.GetLength();
    for(int i=0;i<strlen;i++)
 {
  if(strTime.GetAt(i)==' ')break;
 }
 strTime.Delete(0,i+1);
 if(strTime.GetAt(1)==':')
 {
  strTime.Delete(1,strTime.GetLength()-1);
  return strTime;
 }
 else
 {
  strTime.Delete(2,strTime.GetLength()-2);
  return strTime;
 }
}

*1000。

我们在写程序的时候经常要做日期方面的处理,每次都重新写代码实在麻烦,不如把所有的方法做成一个类,并做成DLL,方便以后所有程序的调用.下面给出一些常用的方法的具体实现.希望各位和高手一起研究研究.
对不足之处希望大家批评改正.
//时间处理类CTimeProc
class CTimeProc 
{
public:
 int m_nYear;
 int m_nMonth;
 int m_nDay;
 int m_nHour;
 int m_nMinute;
 int m_nSecond;
 //得到2个日期相隔的天数
 int GetTimeDist(int stYear,int stMonth,int stDay,int edYear,int edMonth,int edDay);
 //判断输入月份的类型
 //该月30天则返回0;该月31天返回1;该月29天返回-1;该月28天返回-2
 int AssertMonthType(int nYear,int nMonth);
 //判断输入月份有多少天
 int DaysInMonth(int nYear,int nMonth);
 //判断输入年份是否闰年
 BOOL AssertIsLeapYear(int nYear);
 //把字符串转换为数字
 int ChangCStringToInt(CString strNumber);
 //从输入时间得到时(时间格式为:''dddd-dd-dd dd:dd:dd")
 CString SplitTimeToHour(CString strTime);
 //从输入时间得到日
 CString SplitTimeToDay(CString strTime);
 //从输入时间得到月
 CString SplitTimeToMonth(CString strTime);
 //从输入时间得到年
 CString SplitTimeToYear(CString strTime);
//得到当前系统的时间
 CString GetCurtTime();
};

在time.h中的_strtime() //只能在windows中用
char t[11];
_strtime(t);

//闰年返回TRUE;否则返回FALSE;
BOOL CTimeProc::AssertIsLeapYear(int nYear)
{
 if((nYear%4==0)&&(nYear%100!=0))
  return TRUE;
 if((nYear%100==0)&&!(nYear%400==0

如何获取代码运行时间
在调试中,经常需要计算某一段代码的执行时间,下面给出两种常用的方式:

他是记录时钟周期的,实现看来不会很精确,需要试验验证;

据说tc2.0的time结构含有毫秒信息
#include <stdio.h>
#include <dos.h>
int main(void)
{
struct time t;
gettime(&t);
printf("The current time is: %2d:%02d:%02d.%02dn",
t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
return 0;
}
time 是一个结构体,, 其中成员函数 ti_hund

clock_t end_time=clock();
cout<< "Running time is: "<<static_cast<double>(end_time-start_time)/CLOCKS_PER_SEC*1000<<"ms"<<endl;//输出运行时间
return 0;
} clock_t,clock()定义于time.h中,clock()返回从程序运行时刻开始的时钟周期数,类型为long.CLOCKS_PER_SEC定义了每秒钟包含多少了时钟单元数,因为计算ms,所以

Window里面的一些不一样的
CTime MFC类,好像就是把time.h封了个类,没扩展
CTime t = GetCurrentTime();
SYSTEMTIME 结构包含毫秒信息
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
SYSTEMTIME t1;
GetSystemTime(&t1)
CTime curTime(t1);
WORD ms = t1.wMilliseconds;
SYSTEMTIME sysTm;
::GetLocalTime(&sysTm);

#include<iostream>
#include<windows.h>

int main()
{
DWORD start_time=GetTickCount();
{
//此处为被测试代码
}
DWORD end_time=GetTickCount();
cout<<"The run time is:"<<(end_time-start_time)<<"ms!"<<endl;//输出运行时间
return 0;
} GetTickCount函数返回从系统运行到现在所经历的时间(类型为DWORD),单位为ms,因为DWORD表示范围的限制,所以使用此种方法存在限制,即系统的运行时间的ms表示不能超出

是豪秒。。。上程序可以在tc2.0运行

这个是windows里面常用来计算程序运行时间的函数;
DWORD dwStart = GetTickCount();
//这里运行你的程序代码
DWORD dwEnd = GetTickCount();
则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位
这个函数只精确到55ms,1个tick就是55ms。


timeGetTime()基本等于GetTickCount(),但是精度更高
DWORD dwStart = timeGetTime();
//这里运行你的程序代码
DWORD dwEnd = timeGetTime();
则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位

由上面分析可知,用clock()函数计算运行时间,表示范围一定大于GetTickCount()函数,所以,建议使用clock()函数。