Files
MuditaOS/module-utils/time
Marcin Smoczyński 486d21af0e [EGD-4288] refactor global data (#959)
Reduce firmware size by refactoring global data defined in public
headers.

Each global variable which require runtime initialization adds
initialization code to every translation unit which includes the header
where the variable is defined and declared.
2020-11-04 18:24:39 +01:00
..

Time conversion utility

Why?

  • There is no locale except C-Locale available in stdlib nano and we need time conversions.
  • stdlibnano doesn't provide a way to sustitute C-Locale (it's static)

How?

There is C-Locale builtin, therefore it's used to convert time whenever possible.
When it's not -> specifiers are substituted with our locale (i18 map)

    +------------+     +--------+
    |  Timestamp | <=> | Locale |
    +------------+     +--------+
          *
          |
    +------------+
    |  DateTime  |
    +------------+
        *     *
       /       \
      /         \
 +------+     +------+
 | Time |     | Date |
 +------+     +------+

Locale - (utils::time::Locale) class for i18n Timestamp internationalization management
Timestamp - general class to store time data. Init with a EPOCH timestamp. Has input and output formatters.
DateTime - class for most of possible usecases, initialized with system clock, can return time/date string in reference to past Date - just a subclass with a default formatter returning the date in particular Time - just a subclass with a default formatter returning the time, regardless of the date (today/yesterday/5 days ago)

For more see headers