Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
PicoTime.h
Go to the documentation of this file.
1
17#pragma once
18
19#include <ctime>
20#include <string>
21#include "pico/stdlib.h"
22
23#include "time/TimeOfDay.h"
24#include "time/DaysOfWeek.h"
25
26#if PICO_RP2040
27#include "hardware/rtc.h"
28#endif
29
35{
36public:
41 static time_t now();
42
47 static struct tm nowTm();
48
53 #if PICO_RP2040
54 static datetime_t nowDatetime();
55 #endif
60 static std::string getNowHhMmSs();
61
67 static struct tm todayAt(const struct tm *hhmmss);
68
74 static time_t todayAtTimeT(const struct tm *hhmmss);
75
81 static std::string todayHhMmSsString(const struct tm *hhmmss);
82
86 static void printNow();
87
92 static void print(time_t t);
93
98 static void print(const struct tm *t);
99
104 #if PICO_RP2040
105
106 static void print(const datetime_t *dt);
107 #endif
108
109 static TimeOfDay toTimeOfDay(uint32_t timestamp) {
110 time_t t = static_cast<time_t>(timestamp);
111 struct tm tm;
112 localtime_r(&t, &tm);
113 return TimeOfDay{ static_cast<uint8_t>(tm.tm_hour), static_cast<uint8_t>(tm.tm_min), static_cast<uint8_t>(tm.tm_sec) };
114 }
115
116 static DaysOfWeek dayOfWeekBitmask(uint32_t timestamp) {
117 uint32_t days = timestamp / 86400;
118 uint8_t weekday = (days + 4) % 7; // Sunday = 0
119 return static_cast<DaysOfWeek>(1u << weekday);
120 }
121
122 static Day dayOfWeek(uint32_t timestamp) {
123 uint32_t days = timestamp / 86400;
124 uint8_t weekday = (days + 4) % 7; // Sunday = 0
125 return static_cast<Day>(1u << weekday);
126 }
127
128 static std::string formatIso8601(time_t t); // e.g., "2025-05-15T06:00:00"
129
130};
Defines a bitmask enum for days of the week.
Day
Enum for days of the week as bitmask flags.
Definition DaysOfWeek.h:18
uint8_t DaysOfWeek
Type alias for a set of days (bitmask).
Definition DaysOfWeek.h:31
A simple representation of wall-clock time (HH:MM or HH:MM:SS)
Cross-platform time utilities for RP2040 and RP2350.
Definition PicoTime.h:35
static DaysOfWeek dayOfWeekBitmask(uint32_t timestamp)
Definition PicoTime.h:116
static TimeOfDay toTimeOfDay(uint32_t timestamp)
Print a datetime_t to stdout.
Definition PicoTime.h:109
static void printNow()
Print the current time to stdout.
Definition PicoTime.cpp:110
static Day dayOfWeek(uint32_t timestamp)
Definition PicoTime.h:122
static struct tm todayAt(const struct tm *hhmmss)
Construct today's date with a specific time-of-day.
Definition PicoTime.cpp:78
static std::string formatIso8601(time_t t)
Definition PicoTime.cpp:131
static struct tm nowTm()
Get the current local time as struct tm.
Definition PicoTime.cpp:50
static time_t now()
Get the current epoch time using platform RTC or AON.
Definition PicoTime.cpp:28
static time_t todayAtTimeT(const struct tm *hhmmss)
Convert a tm with today's date and time to epoch.
Definition PicoTime.cpp:94
static void print(time_t t)
Print a given UNIX timestamp to stdout.
Definition PicoTime.cpp:116
static std::string todayHhMmSsString(const struct tm *hhmmss)
Convert a time-of-day to a string for today.
Definition PicoTime.cpp:101
static std::string getNowHhMmSs()
Get the current time as a datetime_t.
Definition PicoTime.cpp:69
A simple value type representing a time of day (hour, minute, second).
Definition TimeOfDay.h:22