Dates in EAD3

In EAD 2002, there were only 2 elements to encode a date: <date> and <unitdate>. In other words, anything that wasn’t the date of a unit, within a <did>, was within <date>. EAD3 created new date forms to handle complex dates in a much more structured manner. The previous options were especially bad at handling sets of dates, which these new elements support.

When talking about normalized/standardized versions of dates, I’m referring to ISO 8601 format, what we know as YYYY-MM-DD.

<date>

The basic <date> element remains essentially the same. Other than @type changing to @localtype, its attributes didn’t significantly change. The primary difference for <date> is that it can no longer be used in many of its parent elements, which now take new date elements. <date> may record either a single date or a range of dates.

Example:

	<date normal="2014-03-01">1 March 2014</date>

<datesingle>

The new <datesingle> element is used to record single dates only. It has three main attributes (and more regular ones), of which one should be used to give appropriate date information. @standarddate is used when the full date is known and records the standardized version of the date. If the date isn’t known but one knows it was not before or not after a year or day, the @notbefore or @notafter attributes should be used. They can contain anything from the year to year-month to year-month-day, depending on how much is known.

<datesingle> may be used within <chronitem>, <dateset>, <localcontrol>, <relation>, and <unitdatestructured>

Example of a <datesingle> for an uncertain date:

	<datesingle notbefore="1100">circa 1100</datesingle>

<daterange>

<daterange> encodes a range of dates using <fromdate> and &t;todate>. Neither is required, as a date range may be “to present” or not have a known start date. You would not encode information such as “to present” in the <todate> element, although if you have basic knowledge of when something started, you may encode a nebulous date using the @notbefore attribute in <fromdate>, such as a collection you know definitely doesn’t contain anything before 1920.

<daterange> may be used within <chronitem>, <dateset>, <localcontrol>, <relation>, and <unitdatestructured>.

In this example, dates aren’t entirely certain, but both @notafter and @standarddate were used, on the assumption that they’re basically correct and the system would handle them different ways. Otherwise @standarddate would be cut out:

	<daterange>
		<fromdate notafter="0950" standarddate="0950">materials may slightly pre-date 0950</fromdate>
		<todate notafter="1100" standarddate="1100">1100</todate>
	</daterange>

<fromdate>

<fromdate> is the starting date of a range within <daterange>. It has three main attributes (and more regular ones), of which one should be used to give appropriate date information. @standarddate is used when the full date is known and records the standardized version of the date. If the date isn’t known but one knows it was not before or not after a year, month, or day, the @notbefore or @notafter attributes should be used. They can contain anything from the year to year-month to year-month-day, depending on how much is known.

<todate>

<todate> is the ending date of a range within <daterange>. It has three main attributes (and more regular ones), of which one should be used to give appropriate date information. @standarddate is used when the full date is known and records the standardized version of the date. If the date isn’t known but one knows it was not before or not after a year, month, or day, the @notbefore or @notafter attributes should be used. They can contain anything from the year to year-month to year-month-day, depending on how much is known.

<dateset>

<dateset> is the element used to encode a group of dates together. They must be within <datesingle> and/or <daterange> elements, but you can use as many of either as you please. It may be used within <chronitem>, <relation>, and <unitdatestructured>.

An example of a <dateset> with just one <datesingle> and just one <daterange>:

	<dateset>
		<datesingle standarddate="1924-03">March 1924</datesingle>
		<daterange>
			<fromdate standarddate="1924-07">July 1924</fromdate>
			<todate standarddate="1924-09">September 1924</todate>
		</daterange>
	</dateset>

<eventdatetime>

<eventdatetime> is a very specific and required child element of <maintenanceevent>. It records the date and time of each maintenance event performed on the file. Rather than @standarddate, it uses @standarddatetime to encode the date and time at which the event was performed. This allows for sorting between events performed on the same day or even in the same minute. @standarddatetime takes full ISO 8601 dateTime including offset, such as YYYY-MM-DDTHH:MM:SS-5:00 (the -5:00 is Eastern Standard time offset).

Example:

	<maintenanceevent>
		<eventtype value="derived"/>
		<eventdatetime standarddatetime="2014-03-01T08:05:33Z">1 March 2014</eventdatetime>
		<agenttype value="machine"/>
		<agent>Computer</agent>
		<eventdescription>Conversion from EAD 2002 finding aid using XSL transformation.</eventdescription>
	</maintenanceevent>

<unitdate>

For the most part <unitdate> remains the same as it was before. It can no longer contain reference or title elements. Its normalized date is still recorded within @normal.

Example:

	<unitdate normal="0950/1100" certainty="circa" unitdatetype="inclusive">0950-1100</unitdate>

<unitdatestructured>

<unitdatestructured> allows you to take advantage of <daterange>, <dateset>, and <datesingle> elements to create a strucutred and specified date if desired. You may only use one of the three, so if a complex date is involved, it should contain <dateset> to handle the multiple date elements. Because it uses further date elements, <unitdatestructured> does not use anything like @normal or @standarddate. It still uses @unitdatetype to state whether the dates are bulk or inclusive and @certainty to indicate such certainties as “circa,” “approximately,” etc.

Example:

	<unitdatestructured unitdatetype="inclusive">
	<daterange>
		<fromdate notafter="0975">975</fromdate>
		<todate notafter="1050">1050</todate>
	</daterange>
</unitdatestructured>