Convert EDTF to Regular Dates Without Needing to Code
TL;DR: I’ve made a small, in-browser utility for converting EDTF dates to pairs of date boundaries without needing to code.
Many readers of this blog will be familiar with the “preferred” way to specify dates for computers: ISO 8601, or YYYY-MM-DD
, such as the date of this post, 2021-03-20
.
This is great when you have an exact date you want to specify, but as is often the case in messy historical / humanisitc data, we rarely have such precision. We may only know, for example, that:
- a painting was made at some point in 1653
- a book was published on some day in August 1801
- a person of interest arrived at a city on April 2, 1930, and left sometime in November of 1934
- a probate inventory has only a partially legible date written on it: 1731-02-1…[something]
One strategy to deal with assertions like these when computing is to create a pair of YYYY-MM-DD
dates representing the earliest and latest possible dates given our range of certainty. Thus:
- The painting was made between 1653-01-01 and 1653-12-31
- The book was published between 1801-08-01 and 1801-08-31
- The person was within the city at some time between 1930-04-02 and 1934-11-30
- The probate inventory was made between 1731-02-10 and 1731-02-19
With these boundaries, we can search through uncertain dates, visualize possible time ranges and overlaps with tools like Palladio, and more. But it is a tremendous pain to manage so many different columns during data entry and cleaning.
The Extended Date/Time Format (EDTF) Specification (core features of which are adopted by ISO 8601-2,) is an expressive update to the strict precision of ISO 8601-1, specifying notation for dates and date ranges of varying precision and certainty. From our examples above, we could succinctly write:
- 1653
- 1801-08
- 1930-04-02/1934-11
- 1731-02-1X
and tools / code libraries for parsing EDTF can understand each of these cases and compute the possible earliest/latest dates (along with many other properties) for further use in search, computing, or visualization. My EDTF converter lets you paste in a list of EDTF dates and it’ll calculate the earliest and latest date boundaries (as well as alert you if any of your date strings are invalid.)
There’s a lot more to EDTF than the examples shown here (including qualifications, seasons, open-ended intervals, and more) and the various parsing libraries can do more than pull out early/late date boundaries. I recommend you read more about the EDTF spec and try out the the Python or JavaScript EDTF libraries.