2011-08-26 55 views
0

我有時間格式,看起來像這樣:解析時間段

10:30-12:30,18:00-00:30 Mo-We,Th,Sa 

Mo-Fr 08:00-13:30; Sa 08:00-12:30 

有任何簡單,快捷的方式來解析這個?我需要一個函數來比較這種格式的當前時間。

這是標準格式嗎?

+0

twoface88,你試過的代碼在哪? –

回答

3

不,它不是標準格式。我會嘗試在幾個關鍵部位分割你的問題:

1)數據存儲:

既然問題被限制在一週的日子裏,你可以創建對tm structs的數組一週的每一天:

#include <time.h> 

typedef tm interval[2]; 
typedef interval* daysofweek[7]; 

void main(void) 
{ 
    int number_of_intervals = 2; //this must be calculated for each day but to exemplify how you could store your data I initialised it to 2 
    interval *intervals; 
    intervals = (interval*)malloc(number_of_intervals); 
    daysofweek d; 
    d[0] = intervals; //you must set the intervals for each day 
} 

2)解析

你應該定義一個基於字符串的sintax一組規則。從兩個字符串你的例子我將定義以下規則:

  • 拆分並分別對待基礎上,;字符的所有字符串
  • 分裂導致字符串與數字(加-:,)的一部分分別是帶字符的部分
  • 用數字解析該部分並創建時間間隔
  • 解析帶有字符的部分併爲每天填充數組,跟蹤所有日期以便您可以使用數字初始化剩餘天數0秒間隔

3)比較

之後填充了數據結構,則可以解析它並推斷,如果你在一個間隔或不通過使用ctime找到的比較函數。

HTH, JP。

P.S.如果你使用C++和STL而不是普通的C,那麼任務會更容易一些。