2011-08-26 168 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,那么任务会更容易一些。