From 98507404d3bd50e0006dc34de88132a5322e843a Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sat, 23 Nov 2024 16:33:22 -0600 Subject: [PATCH] Update: The time specification, making it more flexible. Improve the time specification to grant better control and flexibility on what it means to those implementing and using it. Provide suggestions regarding IKI and EKI. Remember, these are suggestions and are not requirements. --- specifications/time.txt | 72 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 21 deletions(-) diff --git a/specifications/time.txt b/specifications/time.txt index 5bc8514..625116e 100644 --- a/specifications/time.txt +++ b/specifications/time.txt @@ -1,7 +1,7 @@ # fss-0002 iki-0000 # # license open-standard-license-1.0-or-later -# version 2023/12/16 +# version 2024/11/23 # # 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 '"' '"' @@ -13,34 +13,64 @@ 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 year but may contain a year to designate the point in the counting begins. + 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". - The common form is intended as the non-technical form that is form common use. + 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). + 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 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 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" would be 5 units before the start of the year 2022. - Because the negative is allowed, so must the positive character (such as code:"2022:+5"). - A positive value is the default interpretation when no sign is valid. - - The unit of time called bold:"Time" is counted increments of a nanosecond, or 10^-9 seconds. - A unit of bold:"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 of time called bold:"EpochTime" is counted increments of a second, or 10^-9 seconds. - A unit of bold:"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 bold:"EpochTime" is the bold:"UNIX Epoch", sometimes called bold:"Unix time". - - The unit bold:"Time" has two technical forms and one common form, with the year and without the year. + 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. -- 1.8.3.1