BDS Public
Beamlib 3.3.4
This is the Beam C++ class library.
Loading...
Searching...
No Matches
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
14class BTimeStampMs;
15
18public:
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);
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);
72
73public:
81};
82
83// String conversion functions
84void toBString(BTimeStamp& v, BString& s);
85void 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
BTimeStamp & operator=(const BTimeStampMs &timeStamp)
Definition BTimeStamp.h:61
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
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