7#include <grass/datetime.h>
9static void make_incr();
85 for (pos = dtfrom; pos < from; pos++) {
88 dt->month += dt->year * 12;
92 dt->hour += dt->day * 24;
96 dt->minute += dt->hour * 60;
100 dt->second += dt->minute * 60.0;
116 for (carry = 0, pos = dt->to; carry == 0 && pos > to; pos--) {
130 case DATETIME_MINUTE:
134 case DATETIME_SECOND:
142 make_incr(&incr, to, to, dt);
162 for (pos = dt->to; pos > to; pos--) {
163 make_incr(&incr, pos, pos, dt);
165 incr.year = dt->year;
166 incr.month = dt->month;
167 incr.day = dt->day + ndays / 2;
168 incr.hour = dt->hour;
169 incr.minute = dt->minute;
170 incr.second = dt->second;
173 if (ndays > 0 && pos == DATETIME_DAY)
180 for (pos = from; pos < dtfrom; pos++)
194 case DATETIME_MINUTE:
197 case DATETIME_SECOND:
202 for (pos = to; pos > dt->to; pos--)
216 case DATETIME_MINUTE:
219 case DATETIME_SECOND:
225 if (dt->to < DATETIME_SECOND)
234static void make_incr(DateTime * incr,
int from,
int to, DateTime * dt)
int datetime_change_from_to(DateTime *dt, int from, int to, int round)
Changes the from/to of the type for dt. The 'from/to' must be legal values for the mode of dt; (if th...
int datetime_increment(DateTime *src, DateTime *incr)
This function changes the 'src' date/time data based on the 'incr' The type (mode/from/to) of the '...
int datetime_days_in_year(int year, int ad)
returns the number of days in 'year'
int datetime_is_negative(const DateTime *dt)
Returns: 1 if the DateTime is negative 0 otherwise.
void datetime_set_negative(DateTime *dt)
Makes the DateTime negative. (B.C. for ABSOLUTE DateTimes)
int datetime_is_valid_type(const DateTime *dt)
Returns: 1 if datetime_check_type() returns 0 0 if not.
int datetime_is_absolute(const DateTime *dt)
Returns: 1 if dt.mode is absolute 0 if not (even if dt.mode is not defined)
int datetime_set_type(DateTime *dt, int mode, int from, int to, int fracsec)
int datetime_is_relative(const DateTime *dt)
Returns: 1 if dt.mode is relative 0 if not (even if dt.mode is not defined)