136 lines
6.1 KiB
C
Raw Permalink Normal View History

2025-04-30 16:24:29 +08:00
/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 1994 - 2003, All Rights Reserved */
/* */
/* MODULE NAME : time_str.h */
/* PRODUCT(S) : */
/* */
/* MODULE DESCRIPTION : */
/* */
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 02/28/08 JRB 16 Incl "timeb.h" only in "sysincs.h" */
/* 11/30/06 RLH 15 merge time_str and time_str2 */
/* 07/13/06 RLH 14 tstrTimeToStringGmt and tstrStringToTimeGmt */
/* prototypes added */
/* 03/06/06 RLH 13 add GetTimeAndUsec, tstrTimeToStringGmt, */
/* tstrStringToTimeGmt */
/* 07/27/04 DWL 12 Added tstrTmToString (struct tm) */
/* 07/16/04 DWL 11 Added tstrStringToTm (struct tm) */
/* 10/30/03 EJV 10 Added dataLen param to UtcValueToXmlString */
/* 10/15/03 JRB 09 Del _WIN32 ifdef. */
/* 09/01/03 GLB 08 Added "XmlStringToUtcValue" & */
/* "UtcValueToXmlString" */
/* 07/12/02 NAV 07 Add UtcValsToString and UtcStringToVals */
/* 02/02/01 EJV 06 tstrStringToTime: chg (long *) to (time_t *) */
/* 07/13/98 NAV 05 Add _cplusplus support */
/* 10/15/97 NAV 04 Add Btime4 Support Functions */
/* 10/08/97 NAV 03 Add seconds to TSTR_DEF_TIME_FORMAT */
/* 09/04/97 NAV 02 Add Btime6 Conversion routines */
/* 11/08/94 MDE 01 New */
/************************************************************************/
/************************************************************************/
/* TIME STRING FORM FOR READ DATA */
/* */
/* Date{ws}Time */
/* Time{ws}Date (? should we allow this) */
/* Time only (uses current time) */
/* Date only (uses current date) */
/* */
/* Date forms : */
/* 12/01/56 */
/* 12/01/1956 */
/* 12-01-56 */
/* 12-01-1956 */
/* 12-1-56 */
/* 12-1-56 */
/* 26-Aug-1994 */
/* 26-AUG-1994 */
/* AUG-26-1993 */
/* */
/* Time forms : */
/* 7:21:43P */
/* 7:21:43p */
/* 7:21:43a */
/* 7:21:43A */
/* 07:21:43a */
/* 7:21:43 */
/* 21:21:43 */
/* */
/************************************************************************/
#include "sx_defs.h"
#ifdef __cplusplus
extern "C" {
#endif
/* parms that control how a date is parsed in terms of field ordering */
#define S_DATE_ORDER_ANY 0 /* check system locale for ordering */
#define S_DATE_ORDER_MDY 1 /* date ordering is month-day-year */
#define S_DATE_ORDER_DMY 2 /* date ordering is day-month-year */
#define S_DATE_ORDER_YMD 3 /* date ordering is year-month-day */
/* number of seconds difference between 1984-01-01 and 1970-01-01. */
/* this amounts to 14 years including 3 leap-year days (1972, 1976 */
/* and 1980) converted to a number of seconds. 1984 is a leap year */
/* but the span of dates does not include 1984-02-29, so 1984's */
/* leap-year day is not counted. */
/* S_SECS_DIFF_1984_1970 is used to calculate Btime6 values. */
#define S_SECS_DIFF_1984_1970 ((((1984-1970)*365)+3) * 86400)
#define MAX_TIME_STRING_LEN 256
#define TSTR_DEF_TIME_FORMAT "%m-%d-%Y %H:%M:%S"
extern char * tstrTimeFormat;
ST_RET tstrTimeToStringGmt ( time_t t, char * dest );
ST_RET tstrStringToTimeGmt ( char * src, time_t * out );
ST_RET tstrStringToTime ( char * src, time_t * out );
ST_RET tstrStringToTm ( char * src, struct tm * out );
ST_RET tstrTimeToString ( time_t t, char * dest );
ST_RET tstrTimeToStringGmt ( time_t t, char * dest );
ST_RET tstrTmToString ( struct tm * t, char * dest );
ST_RET tstrTmToStringGmt ( struct tm * t, char * dest );
#define BTIME_DEF_TIME_FORMAT "%m-%d-%Y %H:%M:%S"
ST_RET Btime6StringToVals ( char * src, ST_INT32 * numDays, ST_INT32 * numMSec );
ST_RET Btime6ValsToString ( char * dest, ST_INT32 numDays, ST_INT32 numMSec );
ST_RET Btime4StringToVals ( char * src, ST_INT32 * numMSec );
ST_RET Btime4ValsToString ( char * dest, ST_INT32 numMSec );
ST_RET UtcStringToVals ( char * src, ST_UINT32 * pSecs, ST_UINT32 * pFraction,
ST_UINT32 * pQflags );
ST_RET UtcValsToString ( char * dest, ST_UINT32 secs, ST_UINT32 fraction,
ST_UINT32 qflags );
ST_RET UtcStringToValues ( char * src, ST_UINT32 * pSecs, ST_UINT32 * pFraction );
ST_RET UtcValuesToString ( char * dest, ST_UINT32 secs, ST_UINT32 fraction );
ST_RET XmlStringToUtcValue ( ST_CHAR * src, SX_DATE_TIME * sxDateTime );
ST_RET UtcValueToXmlString ( ST_CHAR * dest, ST_UINT destLen, SX_DATE_TIME * sxDateTime );
ST_DOUBLE CalculateTimeZoneOffset ( ST_VOID );
#define UTC_DEF_TIME_FORMAT "%Y-%m-%dT%H:%M:%S"
#define GET_TIME_AND_USEC_DEFINED 1
time_t GetTimeAndUsec ( long * usec );
time_t usr_mkgmtime ( struct tm * t );
#ifdef __cplusplus
} /* End of 'C' functions */
#endif