FLL - Specifications - Time and EpochTime
Author: Kevin Day
Description: Featurless Linux Library Specifications
Keywords: Featureless, FLL, Kevin Day, Kevux, Linux, Library, Distribution, Open-Source, specification, standard, Time, EpochTime

# Featureless Linux Library Specification

## Time and EpochTime

The version date of this specification is `2023/12/16`.

The license (copyright) is Open Standard License 1.0 or greater.

There are two units of Time, the first is simply called Time and the second is called EpochTime.

Both Time and EpochTime are measured without the year but may contain a year to designate the point in the counting begins. These are both represented by a single 64-bit (unsigned) integer. The default timezone is always UTC.

The common form is intended as the non-technical form that is form common use. This may have a negative value or be more than 64-bit digits long. This is simply not expected to be interpreted as a unit of time on a computer (but nothing stops it from being interpreted).

The technical forms are limited to 64-bit unsigned for technical use but should technology advance to a point where larger bits are needed then this allows for that. The systems should expect 64-bit and larger bits would have to become common before something larger than 64-bit is the expected or assumed default. Negative signs can be allowed but they must not prevent the full use of the 64-bit. The implementation of how this is done is left to the implementer except that the signs are immediately to the left of the digit. For example `2022:-5` would be 5 units before the start of the year 2022. Because the negative is allowed, so must the positive character (such as `2022:+5`). A positive value is the default interpretation when no sign is valid.

## Time

The unit of time called Time is counted increments of a nanosecond, or 10^-9 seconds. A unit of Time is, therefore, equivalent to a nanosecond. When the year is not specified, then the behavior of the year is not defined. The year can be inferred, directly designated through some other means, understood, asserted, or simply unknown or otherwise unspecified. The general recommendation is that the default year for bold:"Time" is the current year.

The unit Time has two technical forms and one common form, with the year and without the year.

Key:

- `\s` = White space.
- `\d` = The digits used to represent time (a digit).
- `*` = Zero or more occurrences.
- `+` = One or more occurrences.
- `:` = A single colon `:` (`U+003A`).
- `"` = A single double-quote `"` (`U+003A`).

The common form of Time:

Before Structure:

- ``

Structure:

- `\s*\d+\s*\U*\s*`

After Structure:

- ``

Example:

- `86400`
- `86400 T`
- `86400 Time`

The first technical form of Time:

Before Structure:

- ``

Structure:

- `\s*\d+:\d+\s*\U*\s*`

After Structure:

- ``

Example:

- `2022:86400`
- `2022:86400 T`
- `2022:86400 Time`
- `2022:86400 MT`
- `2022:86400 MegaTime`

The second technical form of Time:

Before Structure:

- ``

Structure:

- `\s*:\d+\s*\U*\s*`

After Structure:

- ``

Example:

- `:86400`
- `:86400 T`
- `:86400 Time`
- `:86400 MT`
- `:86400 MegaTime`

## EpochTime

The unit of time called EpochTime is counted increments of a second, or 10^-9 seconds. A unit of EpochTime is, therefore, equivalent to a second. The behavior when the year is not specified is the same as described for the bold:"Time". The general recommendation is that the default year for EpochTime is the UNIX Epoch, sometimes called Unix time.

The unit EpochTime has two technical forms and one common form, with the year and without the year.

The common form of EpochTime:

Before Structure:

- ``

Structure:

- `\s*\d+\s*\U*\s*`

After Structure:

- ``

Example:

- `86400`
- `86400 ET`
- `86400 EpochTime`
- `86400 MET`
- `86400 MegaEpochTime`

The first technical form of EpochTime:

Before Structure:

- ``

Structure:

- `\s*\d+::\d+\s*\U*\s*`

After Structure:

- ``

Example:

- `2022::86400`
- `2022::86400 ET`
- `2022::86400 EpochTime`
- `2022::86400 MET`
- `2022::86400 MegaEpochTime`

The second technical form of Time:

Before Structure:

- ``

Structure:

- `\s*:\d+\s*\U*\s*`

After Structure:

- ``

Example:

- `::86400`
- `::86400 ET`
- `::86400 EpochTime`
- `::86400 MET`
- `::86400 MegaEpochTime`