时间排序问题
有三个文本文件file1,file2,file3,里面存的内容是类似这样的: user1|12345|1377676605 其中1377676605是日历时间,需求是取出日历时间据当前时间最近的文件名。
CFileFind finder;
BOOL findRes=finder.FindFile(fileListDir);
while(findRes)
{
CString strRead;
findRes=finder.FindNextFile();
CString filePath=finder.GetFilePath();
CStdioFile fileRead;
fileRead.Open(filePath,CFile::modeReadWrite);
fileRead.ReadString(strRead);
fileRead.Close();
CString strGet;
AfxExtractSubString(strGet,(LPCTSTR)strRead,2,'|');//get date string
long tempGet=atol(strGet);//文件里取出的时间
CTime currentTime=CTime::GetCurrentTime();
long timel=currentTime.GetTime();//当前时间
//下面的逻辑就不知道该怎么写了,请各位大神帮忙,谢谢
}
//搞个结构体保存需要文件的信息
typedef struct {
char filename[20];
unsigned int rangeflag;
}FileParam;
//一个全局的结构体保存最近的一个文件信息
FileParam m_stParamInfo;
memset(&m_stParam, '\0', sizeof(FileParam));
m_stParamInfo.rangeflag = 100000;
//目前我简单写给100000,
//如果是你实际程序的话,最好搞一个第一次的标识量
//第一次打开第一个文件的时候就直接赋值
while(findRes)
{
//........
// you dosomething...
//下面的逻辑就不知道该怎么写了,请各位大神帮忙,谢谢
char ReadTime[20] = {0};
char CurTime[20] = {0};
FileParam stCurFileInfo;
memset(&stCurFileInfo, '\0', sizeof(FileParam));
AfxExtractSubString(ReadTime, (LPCTSTR)strRead,2,'
[解决办法]
');
//这个接口不知道直接传字符串有问题没,懂这个意思就好
CTime currentTime=CTime::GetCurrentTime();
long timel=currentTime.GetTime();//当前时间
sprintf(CurTime, "%ld", timel); //转换成字符串比较
stCurFileInfo.rangeflag = abs( strncmp(ReadTime, CurTime) );
// 比较取最小值时间差,信息保存到全局结构体中
if( stCurFileInfo. rangeflag < m_stParamInfo.rangeflag )
{
m_stParamInfo.rangeflag = stCurFileInfo.rangeflag;
strncpy(m_stParamInfo.filename,Curfilename, 20);
}
}