# fss-0002 iki-0000
#
# license open-standard-license-1.0-or-later
# version 2025/03/22
#
# This file (assumed to be named time.txt) can be more easily read using the following iki_read commands:
#   iki_read time.txt +Q -r UTC UTC -w -WW character "'" "'" code '"' '"'
#
# To read the "Time Specification" section of this file, use this command sequence:
#   fss_basic_list_read time.txt +Q -cn "Time Specification" | iki_read +Q -r UTC UTC -w -WW character "'" "'" code '"' '"'
#

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

  Both bold:"Time" and bold:"EpochTime" are measured without the base time but may contain a base time 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:"Coordinated Universal Time".

  If no special designation is provided or otherwise understood, then a year is the default and expected base time.
  Anything may be used as an alternative base point of time.
  It could a decade, a day, a minute, or even a microsecond.
  The base time must either be understand or be communicated somehow.

  The common form is intended for use as a less technical form for use in a more casual manner.
  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 as such).

  The more 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 code:"2022:-5" for the standard base time, a year, would be 5 units before the start of the year 2022.
  The negative is allowed and so must the positive character also be allowed (such as code:"2022:+5").
  A positive value is the default interpretation when there is no explicit sign used.

  The unit of time called bold:"Time" is counted in increments of a nanosecond, or 10^-9 seconds, unless otherwise specified or understood.
  The base unit of bold:"Time" is not exclusively fixed to a year and can be fixed to any base point of time.
  The base unit can be inferred, directly designated through some other means, understood, asserted, or simply unknown or otherwise unspecified.
  The general recommendation is that the default base unit, a year, for bold:"Time" is to represent the current year.
  This recommendation may also be followed for other base formats, such as a day, where the bold:"Time" is to represent the current day.
  When the base unit is not specified, then the behavior of the base unit is not explicitly defined and must be somehow understood.

  The unit of time called bold:"EpochTime" is counted increments of a second.
  The bold:"EpochTime" is always expected to always be relative to the bold:"UNIX Epoch" year.
  Specifying a custom base time itself is still relative to the bold:"UNIX Epoch" year.
  Another common name for bold:"UNIX Epoch" is bold:"Unix time".
  The general recommendation is that the default base unit to be a year for bold:"EpochTime".

  The unit bold:"Time" has two technical forms and one common form, with the base unit and without the base unit.

  A suggested use would be to wrap the bold:"Time" or bold:"EpochTime" in something that provides further context, such as bold:"IKI" and bold:"EKI".
  The bold:"EKI" can more easily describe the base time changes.

  The bold:"IKI" could be used to designate the standard units bold:"time" and bold:"epochtime" like the following\:
    code:`time:"12345"`.
    code:`time:"2022:12345"`.
    code:`epochtime:"12345"`.
    code:`epochtime:"2022::12345"`.

  The bold:"EKI" could be used to designate the standard unit bold:"time" and bold:"epochtime" along with a more explicit base time like the following\:
    code:`day:time:"12345"`.
    code:`day:time:"100:12345"`.
    code:`year:time:"2022:12345"`.
    code:`day:epochtime:"12345"`.
    code:`day:epochtime:"100::12345"`.
    code:`year:epochtime:"2022::12345"`.

  In the previous examples for bold:"EKI" show code:"day" along with code:"epochtime".
  For code:`day:epochtime:"100:12345"`, this means that the timestamp starts 100 days after the bold:"UNIX Epoch" year.

  In the previous examples for bold:"EKI" show code:"year" along with code:"epochtime".
  For code:`year:epochtime:"2022:12345"`, this means that the timestamp start 2022 years after the bold:"UNIX Epoch" year.

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

  The common form of bold:"Time"\:

    Before Structure\:
      code:"".

    Structure\:
      code:"\s*\d+\s*\U*\s*".

    After Structure\:
      code:"".

    Example\:
      code:"86400".
      code:"86400 T".
      code:"86400 Time".

  The first technical form of bold:"Time"\:

    Before Structure\:
      code:"".

    Structure\:
      code:"\s*\d+:\d+\s*\U*\s*".

    After Structure\:
      code:"".

    Example\:
      code:"2022:86400".
      code:"2022:86400 T".
      code:"2022:86400 Time".
      code:"2022:86400 MT".
      code:"2022:86400 MegaTime".

  The second technical form of bold:"Time"\:

    Before Structure\:
      code:"".

    Structure\:
      code:"\s*:\d+\s*\U*\s*".

    After Structure\:
      code:"".

    Example\:
      code:":86400".
      code:":86400 T".
      code:":86400 Time".
      code:":86400 MT".
      code:":86400 MegaTime".

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

  The common form of bold:"Time"\:

    Before Structure\:
      code:"".

    Structure\:
      code:"\s*\d+\s*\U*\s*".

    After Structure\:
      code:"".

    Example\:
      code:"86400".
      code:"86400 ET".
      code:"86400 EpochTime".
      code:"86400 MET".
      code:"86400 MegaEpochTime".

  The first technical form of bold:"EpochTime"\:

    Before Structure\:
      code:"".

    Structure\:
      code:"\s*\d+::\d+\s*\U*\s*".

    After Structure\:
      code:"".

    Example\:
      code:"2022::86400".
      code:"2022::86400 ET".
      code:"2022::86400 EpochTime".
      code:"2022::86400 MET".
      code:"2022::86400 MegaEpochTime".

  The second technical form of bold:"Time"\:

    Before Structure\:
      code:"".

    Structure\:
      code:"\s*:\d+\s*\U*\s*".

    After Structure\:
      code:"".

    Example\:
      code:"::86400".
      code:"::86400 ET".
      code:"::86400 EpochTime".
      code:"::86400 MET".
      code:"::86400 MegaEpochTime".
