Beam-lib  2.16.3
This is the Beam C++ class library.
BTimeStamp.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * BTimeStamp.h TimeStamp classes
3  * T.Barnaby, BEAM Ltd, 2008-06-26
4  * Copyright (c) 2012 All Right Reserved, Beam Ltd, http://www.beam.ltd.uk
5  *******************************************************************************
6  */
7 #ifndef BTimeStamp_H
8 #define BTimeStamp_H 1
9 
10 #include <stdint.h>
11 #include <BError.h>
12 
13 class BTimeStampMs;
14 
15 class BTimeStamp {
16 public:
17  BTimeStamp();
18  BTimeStamp(int year, int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
19  BTimeStamp(const BString str);
20  ~BTimeStamp();
21 
22  void clear();
23  void setFirst();
24  void setLast();
25 
26  void set(time_t time, int microSeconds);
27  void set(int year = 0, int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
28  void set(const BTimeStampMs& timeStamp);
29  void setYDay(int year = 0, int yday = 0, int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
30  void setTime(int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
31  void setNow();
32 
33  int year() const;
34  int yday() const;
35  int month() const;
36  int day() const;
37  int hour() const;
38  int minute() const;
39  int second() const;
40  int microSecond() const;
41 
42  void getDate(int& year, int& mon, int& day) const;
43 
44  BString getString(BString separator = "T") const;
45  BError setString(const BString dateTime);
46  BString getStringNoMs(BString separator = "T") const;
48 
49  void addMilliSeconds(int milliSeconds);
50  void addMicroSeconds(int64_t microSeconds);
51  void addSeconds(int seconds);
52  uint32_t getYearSeconds() const;
53  uint64_t getYearMicroSeconds() const;
54 
55  int isSet() const{ return oyear != 0; }
56  int compare(const BTimeStamp& timeStamp) const;
57 
58  operator BString() const { return getString(); }
59  BTimeStamp& operator=(const BTimeStampMs& timeStamp){ set(timeStamp); return *this; }
60 
61  int operator==(const BTimeStamp& timeStamp) const { return (compare(timeStamp) == 0); }
62  int operator!=(const BTimeStamp& timeStamp) const { return (compare(timeStamp) != 0); }
63  int operator>(const BTimeStamp& timeStamp) const { return (compare(timeStamp) > 0); }
64  int operator>=(const BTimeStamp& timeStamp) const { return (compare(timeStamp) >= 0); }
65  int operator<(const BTimeStamp& timeStamp) const { return (compare(timeStamp) < 0); }
66  int operator<=(const BTimeStamp& timeStamp) const { return (compare(timeStamp) <= 0); }
67 
68  static int isLeap(int year);
69  static BInt64 difference(BTimeStamp t2, BTimeStamp t1);
70 
71 public:
72  uint16_t oyear;
73  uint16_t oyday;
74  uint8_t ohour;
75  uint8_t ominute;
76  uint8_t osecond;
77  uint8_t ospare;
78  uint32_t omicroSecond;
79 };
80 
81 // String conversion functions
82 void toBString(BTimeStamp& v, BString& s);
83 void fromBString(BString& s, BTimeStamp& v);
84 
85 #endif
BTimeStamp & operator=(const BTimeStampMs &timeStamp)
Definition: BTimeStamp.h:59
static int isLeap(int year)
Definition: BTimeStamp.cpp:427
int64_t BInt64
Definition: BTypes.h:22
int operator==(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:61
void addMilliSeconds(int milliSeconds)
Add the given number of milli seconds. This should be less that a year.
Definition: BTimeStamp.cpp:298
uint8_t ospare
Padding.
Definition: BTimeStamp.h:77
static BInt64 difference(BTimeStamp t2, BTimeStamp t1)
Definition: BTimeStamp.cpp:432
Definition: BString.h:18
void setNow()
Set the timeStamp to now.
Definition: BTimeStamp.cpp:99
int month() const
Definition: BTimeStamp.cpp:121
int isSet() const
Definition: BTimeStamp.h:55
int year() const
Definition: BTimeStamp.cpp:117
BTimeStamp()
Definition: BTimeStamp.cpp:17
void fromBString(BString &s, BTimeStamp &v)
Definition: BTimeStamp.cpp:465
uint16_t oyear
Year (0 .. 65535)
Definition: BTimeStamp.h:72
int yday() const
Definition: BTimeStamp.cpp:138
BString getStringFormatted(BString format) const
Gets the time in a string form as per the format. Format syntax as per strftime()
Definition: BTimeStamp.cpp:183
~BTimeStamp()
Definition: BTimeStamp.cpp:32
int operator>(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:63
void clear()
Clear the date/time.
Definition: BTimeStamp.cpp:35
void setTime(int hour=0, int minute=0, int second=0, int microsecond=0)
Definition: BTimeStamp.cpp:92
int operator<=(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:66
void setFirst()
Set the first date available.
Definition: BTimeStamp.cpp:39
BUInt32 format
Definition: BFirmware.h:33
int microSecond() const
Definition: BTimeStamp.cpp:154
int hour() const
Definition: BTimeStamp.cpp:142
uint8_t ohour
Hour (0 .. 23)
Definition: BTimeStamp.h:74
Definition: BTimeStampMs.h:13
int second() const
Definition: BTimeStamp.cpp:150
int operator<(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:65
uint8_t osecond
Second (0 .. 59)
Definition: BTimeStamp.h:76
void toBString(BTimeStamp &v, BString &s)
Definition: BTimeStamp.cpp:461
int operator!=(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:62
uint64_t getYearMicroSeconds() const
Get number of micro seconds within the year.
Definition: BTimeStamp.cpp:380
void setLast()
Set the last date available.
Definition: BTimeStamp.cpp:43
uint16_t oyday
Day in year (0 .. 365)
Definition: BTimeStamp.h:73
uint32_t getYearSeconds() const
Get number of seconds within the year.
Definition: BTimeStamp.cpp:369
void getDate(int &year, int &mon, int &day) const
Definition: BTimeStamp.cpp:277
int minute() const
Definition: BTimeStamp.cpp:146
BError setString(const BString dateTime)
Set the time from an ISO date/time.
Definition: BTimeStamp.cpp:208
void setYDay(int year=0, int yday=0, int hour=0, int minute=0, int second=0, int microsecond=0)
Definition: BTimeStamp.cpp:47
BString getString(BString separator="T") const
Get the time as an ISO date/time string.
Definition: BTimeStamp.cpp:159
BString getStringNoMs(BString separator="T") const
Get the time as an ISO date/time string without microseconds.
Definition: BTimeStamp.cpp:171
void addSeconds(int seconds)
Add the given number of seconds. This should be less that a year.
Definition: BTimeStamp.cpp:313
uint8_t ominute
Minute (0 .. 59)
Definition: BTimeStamp.h:75
Definition: BError.h:25
int day() const
Definition: BTimeStamp.cpp:128
Definition: BTimeStamp.h:15
int compare(const BTimeStamp &timeStamp) const
Compare two dates.
Definition: BTimeStamp.cpp:392
void addMicroSeconds(int64_t microSeconds)
Add the given number of micro seconds. This should be less that a year.
Definition: BTimeStamp.cpp:283
void set(time_t time, int microSeconds)
Set time using Unix time (seconds from 1970-01-01)
Definition: BTimeStamp.cpp:57
uint32_t omicroSecond
MicroSecond (0 .. 999999)
Definition: BTimeStamp.h:78
int operator>=(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:64