<h2>Time</h2>

	These are absolutly necessary.  They allow Apache to ensure it is free
	of any y2k or 2038 bugs, because we write our own timing routines.  I
	am using seconds instead of milliseconds, because HTTP says we only
	need second granularity, if this is not granular enough, it is easy to
	change later.

 ap_time_t *ap_make_time(ap_context_t *)
        Make a variable to store time.
     Arguments:
        arg 1)  Context to operate on.
        return) The new time structure.

 ap_statu_t *ap_current_time(ap_context_t *, ap_time_t *)
	Returns the number of seconds since the epoch.  define the epoch
	as midnight January 1, 1970, UTC.
     Arguments:
        arg 1)  The context to operate on
        arg 2)  The time strcuture to store the time to.
	return) current time on local machine.  NULL on error.
 
 ap_status_t ap_explode_time(ap_context_t *, ap_time_t *, ap_timetype_e);
	Convert ap_time_t value into an expanded time format.
     Arguments:
	arg 1)  The context to operate on.
	arg 2)  The time to convert.
	arg 3)  The function to use to convert the time.
        return) APR_SUCCESS or APR_FAILURE.

 ap_int32_t ap_get_sec(ap_context_t *, ap_time_t *)
        Get the number of seconds into the minute [0,61]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of seconds.
NOTE:  ap_explode time MUST be called before this.

 ap_int32_t ap_get_min(ap_context_t *, ap_time_t *)
        Get the number of minutes into the hour [0,59]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of minute.
NOTE:  ap_explode time MUST be called before this.

 ap_int32_t ap_get_hour(ap_context_t *, ap_time_t *)
        Get the number of hours into the day [0,23]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of hours.
NOTE:  ap_explode time MUST be called before this.

 ap_int32_t ap_get_mday(ap_context_t *, ap_time_t *)
        Get the number of days into the month [1,31]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of days.
NOTE:  ap_explode time MUST be called before this.

 ap_int32_t ap_get_mon(ap_context_t *, ap_time_t *)
        Get the number of months into the year [0,11]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of monthss.
NOTE:  ap_explode time MUST be called before this.

 ap_int32_t ap_get_year(ap_context_t *, ap_time_t *)
        Get the number of years since 1900 
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of years.
NOTE:  ap_explode time MUST be called before this.

 ap_int32_t ap_get_wday(ap_context_t *, ap_time_t *)
        Get the number of days since Sunday [0, 6] 
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of days.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_sec(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of seconds into the minute [0,61]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of seconds.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_min(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of minutes into the hour [0,59]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of minute.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_hour(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of hours into the day [0,23]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of hours.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_mday(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of days into the month [1,31]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of days.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_mon(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of months into the year [0,11]
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of monthss.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_year(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of years since 1900 
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of years.
NOTE:  ap_explode time MUST be called before this.

 void ap_set_wday(ap_context_t *, ap_time_t *, ap_int32_t)
        Set the number of days since Sunday [0, 6] 
     Arguments:
        arg 1)  The context to operate on.
        arg 2)  The The time value.
        return) The number of days.
NOTE:  ap_explode time MUST be called before this.

  ap_int64_t ap_get_curtime(ap_context_t *, ap_time_t *)
        Get the number of seconds since Jan 1 1970 (UTC)
     Arguments:
        arg 1)  context to operate on
        arg 2)  variable time is stored in.
        return) Number of seconds since epoch.

  ap_status_t ap_implode_time(ap_context_t *, ap_time_t *)
	Convert exploded time format into an APRTime value.
     Arguments:
	arg 1)  context to operate on 
	arg 2)  abstracted time structure.
        return) APR_SUCCESS or APR_FAILURE 

 APRStatus ap_format_time(char *, APRUInt32, char *, APRExplodedTime,
			   APRUInt32);
	Format time into a buffer.
     Arguments:
	arg 1)  Buffer to store string into
	arg 2)  size of buffer.  Truncate if buffer not long enough
	arg 3)	format to convert to.  Use strftime format
	arg 4)  Time variable to convert
	arg 5)  number of bytes of buffer used.
