Humdrum Representation for Absolute Time


**date -- absolute time representation (year, month, day, hour, minute, second ...)


The **date representation provides a flexible means for specifying particular moments in historical time. The **date scheme is able to represent year, month, day, hour, minute, second, and fractional second information. In addition, various degrees of approximation and uncertainty may be represented. N.B. Time-spans are not represented by **date; see the **dur, **time, or **Zeit representations.

In the **date representation, date information is encoded according to the following basic syntax:


Date information may be encoded in full, or may consist of isolated elements or parts. The following table shows the most succinct ways of encoding single date values within **date:

.11eleven one-hundredths of a second
1111th second
11:11th minute
11::11 o'clock
11/the year 11 A.D.
@11/the year 11 B.C.E./TD>
//1111th day of the month
Examples of **date components
Notice that if a single numerical value appears, it is interpreted as seconds; if a single value appears followed by a slash, it is interpreted as a year; if a single value appears followed by a colon, it is interpreted as a minutes. Days and hours require two leading or two trailing delimiters respectively. In general, abbreviated forms of **date representations tend to favor the two extremes of time: seconds and years. These are the time frames that are typically of greatest interest to music scholars.

The **date representation makes use of the Gregorian calendar and the 24-hour clock; Dates prior to the year 1 A.D. can be specified by prepending the "at" sign (@) to the year.

The **date representation provides three distinct means for representing approximate moments. It also provides two independent means for representing uncertainty, as well as mechanisms for representing time boundaries (prior to ...; after ...).

If a date token is preceded by the tilde (~) signifier, the entire data token is taken to be approximate. Hence, the token ~1556/ represents the approximate year 1556, whereas the token ~1901/9/1/ represents approximately September 1st, 1901. When the lower-case letter `x' appears in a data token, it indicates that only the adjoining numerical value is approximate. Hence, the token 1921/6x// means approximately June in the year 1921, whereas the token 1921x/6// means the month of June in the approximate year 1921. The `x' may precede or follow a given value -- provided it is adjacent to the approximate value.


means approximately 30 minutes after 2 PM, rather than approximately 2:30 PM. In this case, only the value `30' is approximate.

A third method for representing temporal approximation employs the caret (^) to denote a range. For example, the **date token:


represents a moment somewhere between the years 1554 and 1557. Conceptually, **date is intended to represent moments rather than periods of time. In other words, the above token represents a moment sometime between 1554 and 1557; it is not intended to signify an event that spanned the years 1554 to 1557. **date does not presume how long a moment "lasts," so it is theoretically possible to interpret 1554 to 1557 as a "long moment." However, another representation -- **Zeit (2) -- is intended to represent periods of time, and so is better suited to the task of representing an ongoing state or condition. In **date, the caret (^) is meant merely to provide a more precise means for specifying the degree of approximation. The following **date tokens:


represent approximate times between June 1st and 2nd, 1954, and between 2.230 and 2.238 seconds respectively.

In addition to methods for representing approximation, **date also allows three methods for the encoding of uncertainty. General uncertainty is signified using the question-mark (?). A **date token preceded by a question-mark indicates that the date information is uncertain (rather than imprecise). For example, the **date token:


represents the month of April, 1661 -- but indicates that this date is uncertain. When the lower-case letter `z' appears in a data token, it indicates that only the adjoining numerical value is uncertain. This allows the user to be more specific about what aspect of the date is uncertain. For example, a composer's letter might be dated `September 17th,' but historians may be uncertain of the precise year. This date might be encoded as:


Note that uncertainty is not the same as approximation. Consider, for example, the contents of a letter dated simply "the 10th" that refers to especially hot summer temperatures. The letter is thought to have been written in 1932:


This representation indicates that the year 1932 is uncertain, that the month is approximately August, but that the date is definitely the tenth. As in the case of the `x' signifier, the `z' may precede or follow a given value -- provided it is adjacent to the uncertain value.

A third method for representing uncertainty is provided by the **date logical OR signifier (|). As in the case of the logical BETWEEN (^), the OR signifier separates two component sub-dates. For example, the token 10:41:|11:41: means "either 10:41 AM or 11:41 AM."

In addition to the approximation and uncertainty signifiers, **date also permits the encoding of time boundaries. The less-than sign (<) denotes "prior to" and the greater-than sign (>) denotes "after." For example, the data token <1100/ means prior to 1100 A.D., whereas the token >21:: means after 21 hours.

Time boundaries can be mixed with approximation and uncertainty operators. Hence, the data token <5:30x: represents a time prior to 5 minutes and approximately 30 seconds. Similarly, time boundaries can be mixed with time ranges. Thus, the data token <1604/^1605/ means before some time between 1604 and 1605.

Note that > and < apply to entire date tokens (only one of > or < may appear in a given token). The signifiers ? and ~ can apply to subtokens (joined by the BETWEEN (^) or OR conjunction operators. The signifiers x and z apply to individual numerical values only.


It is recommended that files containing predominantly **data data should be given names with the distinguishing `.dte' extension.


The following table summarizes the **date mappings of signifiers and signifieds.
0-9decimal values
@year B.C. (B.C.E.) rather than A.D.
/year-month, month-day and day-hour delimiter
:hour-minute and minute-second delimiter
.fractional second delimiter; null token
?date uncertain
zvalue uncertain
~date approximate
xvalue approximate
<sometime prior to
>sometime after
^"between" conjunction
|"or" conjunction
Summary of **date Signifiers


Several examples of **date data tokens are identified below:
**date tokensmeaning
1917/06/02/23:55:00.05 minutes before midnight on June 2nd, 1917.
1917/6/2/23:55:00.05 minutes before midnight on June 2nd, 1917.
///11:59:59One second before noon (no day info. provided).
11:59:59One second before noon (no day info. provided).
.001Time of one millisecond.
23.8Time of 23.8 seconds.
/1/1/New Years' Day (January 1st).
1770/The year 1770.
@446/The year 446 B.C.
1983///.741The year 1983; a time-point of 741 milliseconds.
<1300/Sometime before the year 1300.
>1::Sometime after 1 AM.
~14:30:Approximately 2:30 PM.
14:30x:Approximately 30 minutes past 2 PM.
?14:30:Perhaps 2:30 PM.
14:30z:Perhaps 30 minutes past 2 PM.
?1848/Perhaps 1848.
~1848/Approximately 1848.
1847/^1849/Sometime between 1847 and 1849.
1847/|1848/|1849/Either 1847, 1848, or 1849.
1848/4z//1848; perhaps April.
1848x/4//Approximately 1848; certainly April.
<@4000/Prior to 4000 B.C.
>~:1:30After approximately a minute and a half.
//3/^~//5/3Sometime between March and approximately May 3rd.
>?~1933/7/30z/Perhaps sometime after about July 30(?) 1933.
Examples of **date Tokens
The following is a sample document:


Currently, no special-purpose Humdrum commands produce **date as output, or process **date encoded data as input.


The following tandem interpretations can be used in conjunction with **date:
meter signatures*M6/8
Tandem interpretations for **date


**dur, **metpos, **ordo, **recip, **takt, **time, **Zeit