Cardinal vs Ordinal
Summary
Years months and days durations are ordered from 1 (ordinal), whilst time intervals are measured from 0 (cardinal) at the beginning of the day.
Portional is a new linguistics class of numbers indicating the order of the portion from 0. This enables consistent representation of date time, and resolves the programming argument over indexing arrays from 0 or 1.
Background
words colloquially used for counting are “cardinal numbers“, and words used for ordering are “ordinal numbers“.
https://en.wikipedia.org/wiki/Natural_number
Date time has been represented as a mix of ordinal and cardinal numbers.
Dates order durations – the 1st day of the 5th month of the 2,000th year.
Time counts intervals – 2 hours and 30 minutes since the beggining of day.
Imagine doing it the other way around, using cardinals for the count of years since year 0, months since the beginning of the year, days since the start of the month, and then the order of each hour, minute and second.
eg. 1999 years, 4 months, 0 days since year 0, the 3rd hour and 31st minute.
There is an eternal debate amongst programmers about whether to index arrays from 0 or 1. Programming languages in which arrays are indexed from 1 are using Ordinal numbers to represent the position in the array.
When arrays are indexed from 0, they are using Cardinal numbers to count the offset from the beginning of the array.
Proposal
One way to resolve these differences is to create another linguistic class of numbers “Portional” where the first portion is represented with 0 (zeroth).
These are already widely used, and confused with Ordinals.
Ordinals are commonly distinguished by superscript suffix.
In English, this is 1st, 2nd, 3rd, or else th. In French e and er is used.
Some languages use a masculine º (U+00BA) and feminine ª (U+00AA) .
We propose an approach of using superscript notation to indicate whether the number is Ordinal with superscript plus sign ⁺ (U+207A) and Portional with superscript equals sign ⁼ (U+207C). These signs are selected to be quick to write and easy to distinguish with the idea that a Cardinal amount is converted to an ordinal by adding 1 (ceiling), but a portional is converted with the same value (floor).
This enables use to use the date and time portionals together to mean both the portion we are in, and the whole amount of units so far.
Examples:
- For the start of the new year on 1st January 2020:
- 2020-01-01T00:00:00 or 2000Y01M01DT00H00M00S
- 2020⁺01⁺01⁺T01⁺01⁺01⁺
first second of first minute of first hour of first day of first month of the two thousand and twentieth year since the beggining of year 1. - 2019⁼00⁼00⁼T00⁼00⁼00⁼
2019 years since the end of year 1.
This also enables us to sensibly talk about array indexes as being ordinal (from 1) or portional (from 0).