怎样用c程序处理涉及到毫秒的时间加减?

简单的加减可能存在问题。
对于月日需要编程者考虑28-29,30-31以及是否闰月的问题。
不会有问题
mktime函数里面考虑了超过31甚至是小于0的情况
它会帮你进位的,所以跨月,跨年都没关系(我试试看罗先。确实没有问题的,跨年跨月都是没有问题的。)


年要+1900 , 月要+1.才能正确的哦。

1 用strptime()函数把字符串按照相应格式转化为struct tm数据结构;
2 用maketime()函数把struct tm数据结构转为time_t数值进行相关运算;
3 用localtime()函数把time_t数值转回struct tm数据结构
4 用strftime()函数把struct tm数据结构按照相应格式转化为字符串重新update数据库


拆分字符串.将YYYY等获得:sprintf (用纯字符串处理,可能会更累.比如你要判断这个月是29天了,还是30天了?


然后储存到struct tm中.
  struct tm
              {
                      int     tm_sec;         /* seconds */
                      int     tm_min;         /* minutes */
                      int     tm_hour;        /* hours */
                      int     tm_mday;        /* day of the month */
                      int     tm_mon;         /* month */
                      int     tm_year;        /* year */
                      int     tm_wday;        /* day of the week */
                      int     tm_yday;        /* day in the year */
                      int     tm_isdst;       /* daylight saving time */
              };

调用函数mktime获得绝对时间.
time_t t = mktime(..)

然后你就可以相加了,比如加一年就是t+365*24*60*60,加一天就是t+24*60*60
得到最后相加的t.

然后就调用函数localtime转成结构体tm,再逐个取出来,自己组装.

具体看man ctime

这个办法有点笨,不过可以将就了

你可能感兴趣的:(数据结构,编程,c,数据库,struct)