portability/time.hpp
1: #ifndef STLPLUS_TIME
2: #define STLPLUS_TIME
3: ////////////////////////////////////////////////////////////////////////////////
4:
5: // Author: Andy Rushton
6: // Copyright: (c) Southampton University 1999-2004
7: // (c) Andy Rushton 2004-2008
8: // License: BSD License, see ../docs/license.html
9:
10: // Simplified access to representations of time and conversions between them.
11: // The motivation for this package is that the low-level system calls for
12: // accessing time are ugly and therefore potentially error-prone. I hope that
13: // this interface is much simpler and therefore easier to use and more likely
14: // to yield first-time right programs.
15:
16: // time is represented as the built-in integer type time_t - this is the
17: // standard representation of system time in computerland and represents the
18: // number of seconds since midnight 1 Jan 1970, believe it or not.
19:
20: // Functions are provided here for converting to and from more
21: // human-comprehendable forms.
22:
23: ////////////////////////////////////////////////////////////////////////////////
24: #include "portability_fixes.hpp"
25: #include <string>
26: #include <time.h>
27:
28: namespace stlplus
29: {
30:
31: // get the integer representing the time now
32: time_t time_now(void);
33:
34: // get the integer representing the requested time - the local time is expressed in the local timezone
35: time_t localtime_create(int year, int month, int day, int hour, int minute, int second);
36:
37: // extract human-centric form of the machine representation time_t
38: int localtime_year(time_t); // the year e.g. 1962
39: int localtime_month(time_t); // the month, numbered 1-12 e.g. August = 8
40: int localtime_day(time_t); // the day of the month numbered 1-31 e.g. 29
41: int localtime_hour(time_t); // the hour of day numbered 0-23
42: int localtime_minute(time_t); // minute past the hour numbered 0-59
43: int localtime_second(time_t); // second past the minute numbered 0-59
44: int localtime_weekday(time_t); // the day of the week numbered 0-6 with 0=Sunday
45: int localtime_yearday(time_t); // the number of days into the year
46:
47: // convert the integer representation of time to a human-readable form
48: std::string localtime_string(time_t);
49:
50: // convert a time delay in seconds to human-readable form
51: std::string delaytime_string(time_t);
52:
53: } // end namespace stlplus
54:
55: #endif