Representation: **date

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***


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