Beamlib  3.0.1
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) 2022 All Right Reserved, Beam Ltd, https://www.beam.ltd.uk
5  * For license see LICENSE.txt at the root of the beamlib source tree.
6  *******************************************************************************
7  */
8 #ifndef BTimeStamp_H
9 #define BTimeStamp_H 1
10 
11 #include <stdint.h>
12 #include <BError.h>
13 
14 class BTimeStampMs;
15 
17 class BTimeStamp {
18 public:
19  BTimeStamp();
20  BTimeStamp(int year, int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
21  BTimeStamp(const BString str);
22  ~BTimeStamp();
23 
24  void clear();
25  void setFirst();
26  void setLast();
27 
28  void set(time_t time, int microSeconds);
29  void set(int year = 0, int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
30  void set(const BTimeStampMs& timeStamp);
31  void setYDay(int year = 0, int yday = 0, int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
32  void setTime(int hour = 0, int minute = 0, int second = 0, int microsecond = 0);
33  void setNow();
34 
35  int year() const;
36  int yday() const;
37  int month() const;
38  int day() const;
39  int hour() const;
40  int minute() const;
41  int second() const;
42  int microSecond() const;
43 
44  void getDate(int& year, int& mon, int& day) const;
45 
46  BString getString(BString separator = "T") const;
47  BError setString(const BString dateTime);
48  BString getStringNoMs(BString separator = "T") const;
50 
51  void addMilliSeconds(int milliSeconds);
52  void addMicroSeconds(int64_t microSeconds);
53  void addSeconds(int seconds);
54  uint32_t getYearSeconds() const;
55  uint64_t getYearMicroSeconds() const;
56 
57  int isSet() const{ return oyear != 0; }
58  int compare(const BTimeStamp& timeStamp) const;
59 
60  operator BString() const { return getString(); }
61  BTimeStamp& operator=(const BTimeStampMs& timeStamp){ set(timeStamp); return *this; }
62 
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  int operator<(const BTimeStamp& timeStamp) const { return (compare(timeStamp) < 0); }
68  int operator<=(const BTimeStamp& timeStamp) const { return (compare(timeStamp) <= 0); }
69 
70  static int isLeap(int year);
71  static BInt64 difference(BTimeStamp t2, BTimeStamp t1);
72 
73 public:
81 };
82 
83 // String conversion functions
84 void toBString(BTimeStamp& v, BString& s);
85 void fromBString(BString& s, BTimeStamp& v);
86 
87 #endif
BUInt32 format
Definition: BFirmware.h:5
void toBString(BTimeStamp &v, BString &s)
Definition: BTimeStamp.cpp:473
void fromBString(BString &s, BTimeStamp &v)
Definition: BTimeStamp.cpp:477
uint16_t BUInt16
Definition: BTypes.h:22
uint32_t BUInt32
Definition: BTypes.h:24
uint8_t BUInt8
Definition: BTypes.h:20
int64_t BInt64
Definition: BTypes.h:25
Error return class. This class is used to return the error status from a function....
Definition: BError.h:31
This class stores and manipulates ASCII strings.
Definition: BString.h:20
A date and time storage class with milisecond resolution and an extra field to indicate a particular ...
Definition: BTimeStampMs.h:15
A date and time storage class with microsecond resolution.
Definition: BTimeStamp.h:17
void set(time_t time, int microSeconds)
Set time using Unix time (seconds from 1970-01-01)
Definition: BTimeStamp.cpp:63
void addMilliSeconds(int milliSeconds)
Add the given number of milli seconds. This should be less that a year.
Definition: BTimeStamp.cpp:310
BUInt8 ohour
Hour (0 .. 23)
Definition: BTimeStamp.h:76
void addSeconds(int seconds)
Add the given number of seconds. This should be less that a year.
Definition: BTimeStamp.cpp:325
int hour() const
Definition: BTimeStamp.cpp:148
int operator>(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:65
int operator==(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:63
void setFirst()
Set the first date available.
Definition: BTimeStamp.cpp:45
void setTime(int hour=0, int minute=0, int second=0, int microsecond=0)
Definition: BTimeStamp.cpp:98
int minute() const
Definition: BTimeStamp.cpp:152
void setLast()
Set the last date available.
Definition: BTimeStamp.cpp:49
int second() const
Definition: BTimeStamp.cpp:156
int operator<(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:67
int isSet() const
Definition: BTimeStamp.h:57
BUInt16 oyday
Day in year (0 .. 365)
Definition: BTimeStamp.h:75
static BInt64 difference(BTimeStamp t2, BTimeStamp t1)
Definition: BTimeStamp.cpp:444
BString getStringFormatted(BString format) const
Gets the time in a string form as per the format. Format syntax as per strftime()
Definition: BTimeStamp.cpp:189
BUInt8 ospare
Padding.
Definition: BTimeStamp.h:79
BUInt32 omicroSecond
MicroSecond (0 .. 999999)
Definition: BTimeStamp.h:80
int month() const
Definition: BTimeStamp.cpp:127
uint32_t getYearSeconds() const
Get number of seconds within the year.
Definition: BTimeStamp.cpp:381
BError setString(const BString dateTime)
Set the time from an ISO date/time.
Definition: BTimeStamp.cpp:222
int operator!=(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:64
void setYDay(int year=0, int yday=0, int hour=0, int minute=0, int second=0, int microsecond=0)
Definition: BTimeStamp.cpp:53
~BTimeStamp()
Definition: BTimeStamp.cpp:38
int yday() const
Definition: BTimeStamp.cpp:144
BString getStringNoMs(BString separator="T") const
Get the time as an ISO date/time string without microseconds.
Definition: BTimeStamp.cpp:177
BString getString(BString separator="T") const
Get the time as an ISO date/time string.
Definition: BTimeStamp.cpp:165
void addMicroSeconds(int64_t microSeconds)
Add the given number of micro seconds. This should be less that a year.
Definition: BTimeStamp.cpp:295
int compare(const BTimeStamp &timeStamp) const
Compare two dates.
Definition: BTimeStamp.cpp:404
BUInt8 ominute
Minute (0 .. 59)
Definition: BTimeStamp.h:77
void getDate(int &year, int &mon, int &day) const
Definition: BTimeStamp.cpp:289
void setNow()
Set the timeStamp to now.
Definition: BTimeStamp.cpp:105
static int isLeap(int year)
Definition: BTimeStamp.cpp:439
BTimeStamp & operator=(const BTimeStampMs &timeStamp)
Definition: BTimeStamp.h:61
int day() const
Definition: BTimeStamp.cpp:134
int operator<=(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:68
BTimeStamp()
Definition: BTimeStamp.cpp:23
BUInt8 osecond
Second (0 .. 59)
Definition: BTimeStamp.h:78
int operator>=(const BTimeStamp &timeStamp) const
Definition: BTimeStamp.h:66
void clear()
Clear the date/time.
Definition: BTimeStamp.cpp:41
BUInt16 oyear
Year (0 .. 65535)
Definition: BTimeStamp.h:74
int year() const
Definition: BTimeStamp.cpp:123
int microSecond() const
Definition: BTimeStamp.cpp:160
uint64_t getYearMicroSeconds() const
Get number of micro seconds within the year.
Definition: BTimeStamp.cpp:392