home *** CD-ROM | disk | FTP | other *** search
- Time/Date Functions MetalBase 5.0
- -------------------------------------------------------------------------------
-
- MetalBase handles time and date rather cleanly. Two new types have been
- defined, mb_time and mb_date ... each is actually a parsed-out long, so they
- may be passed and returned by value as well as by reference. There are several
- functions available for use with date and time fields (note that {struct tm *}
- is a system-supplied structure, and many many many functions are available for
- its use, completely independant of MetalBase):
-
- mb_date tmtodate (struct tm *)
- If the argument passed is a valid {struct tm*} pointer, its information
- is converted to mb_date format, and the new variable returned. If the
- pointer is NULL, the current date is returned.
-
- mb_time tmtotime (struct tm *)
- If the argument passed is a valid {struct tm*} pointer, its information
- is converted to mb_time format, and the new variable returned. If the
- pointer is NULL, the current time is returned.
-
- struct tm *datetimetotm (mb_date, mb_time)
- If the arguments passed represent valid dates and times, a static local
- variable is filled out to conform to {struct tm*} conventions and
- returned. If either component is zero, that component is replaced by
- the current date or time.
-
- Note that these functions have been #define'd to the following equivalents
- as well:
-
- mb_date curdate();
- Returns the current date (assign with "mb_date x = curdate()" or
- whatever strikes your fancy).
-
- mb_time curtime();
- Returns the current time.
-
- struct tm *curdatetime();
- Returns the curent date and time in a {struct tm *} structure.
-
- There are also two format functions:
-
- char *fmt_date (mb_date, opt)
- The date does _not_ default to the current date if it ==0L. This command
- returns a pointer to a static local character array, in which the date
- represented will be formated to one of the following conventions:
- opt: format:
- default mm/dd/yyyy
- 1 mm/dd/yy
- 2 yymmdd
- Note that we're approaching 2000, so I don't suggest using mm/dd/yy or
- yymmdd... just a personal peeve. Not that my code will be around that
- long or anything, but it's only what, 8 years away?
-
- char *fmt_time (mb_time, opt)
- The time does _not_ default to the current time if it ==0L. This command
- returns a pointer to a static local character array, in which the time
- represented will be formated to one of the following conventions:
- opt: format:
- default hh:mm:ss 24-hour
- 1 hh:mm xx where "xx" == "am" or "pm"
- 2 hh:mm 24-hour
-
- And, accordingly, there are two scanning functions:
-
- mb_date scn_date (char *)
- The string must contain a date, which may be in any of the formats
- supported by fmt_date, and will be scanned appropriately into an
- mb_date structure. Note that this function assumes the separator
- WILL BE '/' ... if you want hyphens as well, you'll have to add
- that.
-
- mb_time scn_time (char *)
- The string must contain a time, which may be in any of the formats
- supported by fmt_time, and will be scanned appropriately into an
- mb_time structure.
-
- There is also a function to find the number of seconds that have elapsed since
- a given mb_time:
- long elap_t (mb_time)
- If you pass it 0L, it will return the number of seconds since midnight.
-
- You can simulate a timer by doing something like this:
- mb_time a;
- a = curtime(); /* Start timer */
- for (;;)
- printf ("It's been %ld seconds\n", elap_t(a));
- Rather useful at times. :) Ha! Times! A pun! Get it? Hooo...
-
-