00001
00002
00003
00004
00005
00006
00007 #include "wvtimeutils.h"
00008
00009 time_t msecdiff(const WvTime &a, const WvTime &b)
00010 {
00011 time_t secdiff = a.tv_sec - b.tv_sec;
00012 time_t usecdiff = a.tv_usec - b.tv_usec;
00013 return secdiff * 1000 + usecdiff / 1000;
00014 }
00015
00016
00017 WvTime wvtime()
00018 {
00019 struct timeval tv;
00020 gettimeofday(&tv, 0);
00021 return tv;
00022 }
00023
00024
00025 WvTime msecadd(const WvTime &a, time_t msec)
00026 {
00027 WvTime b;
00028 b.tv_sec = a.tv_sec + msec / 1000;
00029 b.tv_usec = a.tv_usec + (msec % 1000) * 1000;
00030 normalize(b);
00031 return b;
00032 }
00033
00034
00035 WvTime tvdiff(const WvTime &a, const WvTime &b)
00036 {
00037 WvTime c;
00038 c.tv_sec = a.tv_sec - b.tv_sec;
00039 c.tv_usec = a.tv_usec;
00040
00041 if (b.tv_usec > a.tv_usec)
00042 {
00043 c.tv_sec--;
00044 c.tv_usec += 1000000;
00045 }
00046
00047 c.tv_usec -= b.tv_usec;
00048
00049 normalize(c);
00050 return c;
00051 }
00052