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:
.11 eleven one-hundredths of a second 11 11th second 11: 11th minute 11:: 11 o’clock 11/ the year 11 A.D. @11/ the year 11 B.C.E./TD> /11 November //11 11th 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.`` 14:30x:``
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:`` 1554/^1557/``
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:`` 1954/6/1/^1954/6/2/ 2.23^2.238``
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:`` ?1661/4//``
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:`` 1840z/9/17/``
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:`` 1932z/8x/10/``
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-9 decimal 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 z value uncertain ~ date approximate x value approximate < sometime prior to > sometime after ^ “between” conjunction | “or” conjunction
Summary of ***date** Signifiers*
Several examples of **date data tokens are identified below:**date tokens meaning 1917/06/02/23:55:00.0 5 minutes before midnight on June 2nd, 1917. 1917/6/2/23:55:00.0 5 minutes before midnight on June 2nd, 1917. ///11:59:59 One second before noon (no day info. provided). 11:59:59 One second before noon (no day info. provided). .001 Time of one millisecond. 23.8 Time of 23.8 seconds. /1/1/ New Years’ Day (January 1st). 1770/ The year 1770. @446/ The year 446 B.C. 1983///.741 The 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:30 After approximately a minute and a half. //3/^~//5/3 Sometime 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:
**opus **date 33#1 1864/ 33#2 1864/3/31 33#3 1864/ 34 1865/4z/ 35#1 ?1865/ 35#2 <1865/9/ *- *-
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 tempo *MM96.3
Tandem interpretations for ***date***