adding time functions
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h 499 2008-12-16 09:42:48Z baconevi $
|
||||
* $Id: awk.h 501 2008-12-17 08:39:15Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -1160,15 +1160,13 @@ ase_char_t* ase_awk_valtostr (
|
||||
*
|
||||
* DESCRIPTION
|
||||
* The ase_awk_valtonum() function converts a value to a number.
|
||||
* The converted value is stored into the variable pointed to by
|
||||
* either l or r depending on the type of the number. If the value
|
||||
* is converted to a long number, the function returns 0 and l is
|
||||
* set with the converted number. If the value is converted to a real number,
|
||||
* the function returns 1 and r is set with a real number.
|
||||
* If the value is converted to a long number, it is stored in the memory
|
||||
* pointed to by l and 0 is returned. If the value is converted to a real
|
||||
* number, it is stored in the memory pointed to by r and 1 is returned.
|
||||
*
|
||||
* RETURN
|
||||
* The ase_awk_valtonum() function returns -1 on error, 0 if the converted
|
||||
* value is a long number and 1 if it is a real number.
|
||||
* number is a long number and 1 if it is a real number.
|
||||
*
|
||||
* EXAMPLES
|
||||
* ase_long_t l;
|
||||
|
@ -8,37 +8,124 @@
|
||||
#include <ase/types.h>
|
||||
#include <ase/macros.h>
|
||||
|
||||
#define ASE_EPOCH_YEAR ((ase_time_t)1970)
|
||||
#define ASE_EPOCH_MON ((ase_time_t)1)
|
||||
#define ASE_EPOCH_DAY ((ase_time_t)1)
|
||||
#define ASE_EPOCH_WDAY ((ase_time_t)4)
|
||||
#define ASE_EPOCH_YEAR ((ase_ntime_t)1970)
|
||||
#define ASE_EPOCH_MON ((ase_ntime_t)1)
|
||||
#define ASE_EPOCH_DAY ((ase_ntime_t)1)
|
||||
#define ASE_EPOCH_WDAY ((ase_ntime_t)4)
|
||||
|
||||
#define ASE_DAY_IN_WEEK ((ase_time_t)7)
|
||||
#define ASE_MON_IN_YEAR ((ase_time_t)12)
|
||||
#define ASE_HOUR_IN_DAY ((ase_time_t)24)
|
||||
#define ASE_MIN_IN_HOUR ((ase_time_t)60)
|
||||
#define ASE_DAY_IN_WEEK ((ase_ntime_t)7)
|
||||
#define ASE_MON_IN_YEAR ((ase_ntime_t)12)
|
||||
#define ASE_HOUR_IN_DAY ((ase_ntime_t)24)
|
||||
#define ASE_MIN_IN_HOUR ((ase_ntime_t)60)
|
||||
#define ASE_MIN_IN_DAY (ASE_MIN_IN_HOUR * ASE_HOUR_IN_DAY)
|
||||
#define ASE_SEC_IN_MIN ((ase_time_t)60)
|
||||
#define ASE_SEC_IN_MIN ((ase_ntime_t)60)
|
||||
#define ASE_SEC_IN_HOUR (ASE_SEC_IN_MIN * ASE_MIN_IN_HOUR)
|
||||
#define ASE_SEC_IN_DAY (ASE_SEC_IN_MIN * ASE_MIN_IN_DAY)
|
||||
#define ASE_MSEC_IN_SEC ((ase_time_t)1000)
|
||||
#define ASE_MSEC_IN_SEC ((ase_ntime_t)1000)
|
||||
#define ASE_MSEC_IN_MIN (ASE_MSEC_IN_SEC * ASE_SEC_IN_MIN)
|
||||
#define ASE_MSEC_IN_HOUR (ASE_MSEC_IN_SEC * ASE_SEC_IN_HOUR)
|
||||
#define ASE_MSEC_IN_DAY (ASE_MSEC_IN_SEC * ASE_SEC_IN_DAY)
|
||||
|
||||
#define ASE_USEC_IN_MSEC ((ase_time_t)1000)
|
||||
#define ASE_NSEC_IN_USEC ((ase_time_t)1000)
|
||||
#define ASE_USEC_IN_SEC ((ase_time_t)ASE_USEC_IN_MSEC * ASE_MSEC_IN_SEC)
|
||||
#define ASE_USEC_IN_MSEC ((ase_ntime_t)1000)
|
||||
#define ASE_NSEC_IN_USEC ((ase_ntime_t)1000)
|
||||
#define ASE_USEC_IN_SEC ((ase_ntime_t)ASE_USEC_IN_MSEC * ASE_MSEC_IN_SEC)
|
||||
|
||||
#define ASE_IS_LEAPYEAR(year) (!((year)%4) && (((year)%100) || !((year)%400)))
|
||||
#define ASE_DAY_IN_YEAR(year) (ASE_IS_LEAPYEAR(year)? 366: 365)
|
||||
|
||||
/* number of milliseconds since the Epoch (00:00:00 UTC, Jan 1, 1970) */
|
||||
typedef ase_long_t ase_time_t;
|
||||
typedef ase_long_t ase_ntime_t;
|
||||
typedef struct ase_btime_t ase_btime_t;
|
||||
|
||||
struct ase_btime_t
|
||||
{
|
||||
int sec;
|
||||
int min;
|
||||
int hour;
|
||||
int mday;
|
||||
int mon;
|
||||
int year;
|
||||
int wday;
|
||||
int yday;
|
||||
int isdst;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ase_gettime (ase_time_t* t);
|
||||
int ase_settime (ase_time_t t);
|
||||
/****f* ase.cmn/ase_gettime
|
||||
* NAME
|
||||
* ase_gettime - get the current time
|
||||
*
|
||||
* SYNPOSIS
|
||||
*/
|
||||
int ase_gettime (
|
||||
ase_ntime_t* nt
|
||||
);
|
||||
/******/
|
||||
|
||||
/****f* ase.cmn/ase_settime
|
||||
* NAME
|
||||
* ase_settime - set the current time
|
||||
*
|
||||
* SYNOPSIS
|
||||
*/
|
||||
int ase_settime (
|
||||
ase_ntime_t nt
|
||||
);
|
||||
/******/
|
||||
|
||||
|
||||
/****f* ase.cmn/ase_gmtime
|
||||
* NAME
|
||||
* ase_gmtime - convert numeric time to broken-down time
|
||||
*
|
||||
* SYNOPSIS
|
||||
*/
|
||||
void ase_gmtime (
|
||||
ase_ntime_t nt,
|
||||
ase_btime_t* bt
|
||||
);
|
||||
/******/
|
||||
|
||||
/****f* ase.cmn/ase_localtime
|
||||
* NAME
|
||||
* ase_localtime - convert numeric time to broken-down time
|
||||
*
|
||||
* SYNOPSIS
|
||||
*/
|
||||
int ase_localtime (
|
||||
ase_ntime_t nt,
|
||||
ase_btime_t* bt
|
||||
);
|
||||
/******/
|
||||
|
||||
/****f* ase.cmn/ase_mktime
|
||||
* NAME
|
||||
* ase_mktime - convert broken-down time to numeric time
|
||||
*
|
||||
* SYNOPSIS
|
||||
*/
|
||||
int ase_mktime (
|
||||
const ase_btime_t* bt,
|
||||
ase_ntime_t* nt
|
||||
);
|
||||
/******/
|
||||
|
||||
/****f* ase.cmn/ase_strftime
|
||||
* NAME
|
||||
* ase_strftime - format time
|
||||
*
|
||||
* SYNOPSIS
|
||||
*/
|
||||
ase_size_t ase_strftime (
|
||||
ase_char_t* buf,
|
||||
ase_size_t size,
|
||||
const ase_char_t* fmt,
|
||||
ase_btime_t* bt
|
||||
);
|
||||
/******/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Reference in New Issue
Block a user