比较的日期
问题描述:
功能我已经结构作为:比较的日期
struct stored
{
char *dates; // 12/May/2010, 10/Jun/2010 etc..
};
// const
struct stored structs[] = {{"12/May/2010"}, {"12/May/2011"},
{"21/May/2009"}, {"13/May/2011"},
{"10/May/2011"}, {"19/May/2011"}};
我想要做的是排序结构由stored.dates“储存”。
qsort(structs, 9, sizeof(struct stored*), sortdates); // sortdates function
我不太清楚什么是排序这些日子的好方法?将它们比较为c字符串?
答
你不能将它们比作字符串,但你可以比较子字符串。比较几年,如果不相等,你有你的答案。接下来比较几个月,您需要某种表格来按名称排列月份。最后,如果月份相同,则比较日期。
答
我会的日期转换为使用类似数字:
year * 10000 + month * 100 + day;
,然后做一个简单的数字比较(和月,你需要映射二月从一月到1,2,等)。
如果您正在进行大量比较,则可能需要在结构中缓存等效数字。
答
如果将日期转换为格式YYYYMMDD
(如20100314
),则可以将它们作为字符串或整数(转换后)进行比较。
“ctr”代表什么? – John 2010-03-17 22:49:22
日期(日)(dd),月(MMM),年(yyyy)的格式是否始终相同? – 2010-03-17 22:50:43
ctr基本上只是一个计数器 - 不需要 – Chris 2010-03-17 22:53:19