C語言 日期區間檢測

需求大概是:

       檢索設備錄像文件,通過時間段檢索,文件名以 前綴_日期_時間.mp4 爲準

       分別提取 文件名裏面的 年、月、日、時、分,再檢測是否在某個時間段

附上檢測部分,是否完善,待測

 969 #if 1
 970         // 計算文件時間 轉換成秒
 971         // date -d "2010-10-18 00:00:00" +%s
 972         sprintf(str_sec, "date -d \"%d-%d-%d %d:%d:00\" +%%s", m_year, m_month, m_day, m_hour, m_minute);
 973         //trace("str_sec: %s", str_sec);
 974         if ((ptr = popen(str_sec, "r")) != NULL) {
 975                 if (!fread(result, sizeof(char), sizeof(result), ptr)) {
 976                         trace("fread %s failed", str_sec);
 977                         return 0;
 978                 }
 979
 980         } else {
 981                 trace("popen %s failed", str_sec);
 982                 return 0;
 983         }
 984         diff = atol(result);
 985
 986         // ceiling 轉換成秒
 987         memset(str_sec, 0, sizeof(str_sec));
 988         memset(result, 0, sizeof(result));
 989         sprintf(str_sec, "date -d \"%d-%d-%d %d:%d:00\" +%%s", ceiling.u32Year, ceiling.u32Month, ceiling.u32Day, ceiling.u32Hour, ceiling.u32Minute);
 990         if ((ptr = popen(str_sec, "r")) != NULL) {
 991                 if (!fread(result, sizeof(char), sizeof(result), ptr)) {
 992                         trace("fread %s failed", str_sec);
 993                         return 0;
 994                 }
 995
 996         } else {
 997                 trace("popen %s failed", str_sec);
 998                 return 0;
 999         }
1000         m_ceiling = atol(result);
1001
1002         // floor 轉換成秒
1003         memset(str_sec, 0, sizeof(str_sec));
1004         memset(result, 0, sizeof(result));
1005         sprintf(str_sec, "date -d \"%d-%d-%d %d:%d:00\" +%%s", floor.u32Year, floor.u32Month, floor.u32Day, floor.u32Hour, floor.u32Minute);
1006         if ((ptr = popen(str_sec, "r")) != NULL) {
1007                 if (!fread(result, sizeof(char), sizeof(result), ptr)) {
1008                         trace("fread %s failed", str_sec);
1009                         return 0;
1010                 }
1011
1012         } else {
1013                 trace("popen %s failed", str_sec);
1014                 return 0;
1015         }
1016         m_floor = atol(result);
1017
1018         if (diff >= m_ceiling && diff <= m_floor) {
1019                 return 1;
1020         } else {
1021                 return 0;
1022         }
1023 #endif
發佈了112 篇原創文章 · 獲贊 56 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章