# Dates Special Features

To modify the date of an event you use the "Edit events and facts" dialog window.

GEDKeeper supports the following date subtypes:

- Subtypes "Before", "After", "Between" - a specific but undefined date ("Born after 1960 but before 1965");
- Subtypes "Period before", "Period after", and "Period between" - the period of dates of a long process ("Served in the army from 1978 to 1980");
- Subtypes "About", "Calculated", and "Estimated" - specify inaccurate or relative dates.
- Subtype "Exact" - specifies an exact date (though the date may be incomplete).

Dates can be incomplete, i.e. one or more parts of date may be skipped. That is, to the extent that you can define only day number, month only, or year only. Of course, you can combine these parts.

For a date entered you can specify type of calendar and where the date is calculated. GEDKeeper supports Gregorian, Julian, Jewish (Hebrew), French, and Roman calendars. You can also specify a date as a date of Anno Domini period (BC is off) or a date of Before Christ period (BC is on). In order to convert dates of two different calendars you have to use the "Calendar" plugin.

There are three operations in the program to handle dates: storing, showing, and processing. Each operation has its own specific purpose and that is why all these operations were separated from each other. These purposes are:

- Storing. All dates are stored using a special GEDCOM format. This allows you to define incomplete dates in any form.
- Showing. When GEDKeeper needs to show you a date it translates that date in internal form to a string view. This may include special symbols (if they were enabled in the program settings). For example, the date "About 1701, January" will be rendered as "__.01.1701" (when special symbols are off) or as "~ __.01.1701" (when special symbols are on) in columns of general lists. Dates range like "Between 01.01.1700 and 20.01.1700" will be shown as "01.01.1700 - 20.01.1700". A "Period before 10.10.1800" date will be rendered as "< 10.10.1800" (when special symbols are on).
- Processing. When GEDKeeper processes dates (for example, makes arithmetical operations or compares dates) it translates them into a special internal form ("Julian day"), that allows code compares and handles incomplete dates of different calendars.

When GEDKeeper shows an incomplete date it replaces unknown parts with the underscore ("_") symbol. Some users argued against it, but such symbols allow to clearly show what parts of a date are missed. This also guarantees a unified presentation of all dates throughout the program.

Incomplete dates are also allowed in filters on persons for birthdays and obits. Therefore, it is possible to select all people born between 1700 and 1710, without specifying days and months.

To understand specific processing of dates and events, it is necessary to introduce both the topics—as they are handled in the program. A date of an event is just a combination of known day, month, and year within the bounds of some calendar. A date may be empty or incomplete, exact, relative, or be a range. A date does not bear any other (non-calendar) information. An event is a record about certain occurrences which happened in a person's life. Such a record includes type of event, date, place, description, and additional information. A person entry, for example, can have a record about death with an empty date. This means that person died but no one knows when. Therefore, GEDKeeper processes differently persons with records about death and persons without such a record.

Some other software programs do not handle death and birth events like GEDKeeper does. They usually use a "Died" flag and fields that store date and place of death. From the point of view of GEDKeeper all events are the same. Therefore, GEDKeeper processes them the same way and never limits the number of stored events. For purposes of the next research, a single person record is able to store several death and birth events (thus allowing storing several versions). This makes GEDKeeper more flexible since you do not have to write such events into the text notes, or write birth and death events as a range of dates. Moreover, having such an approach allows you to attach sources of information to each event and, later, see all the sources. When a researcher gets reliable information you can delete an incorrect event or mark it as erroneous. The latter allows seeing that some information, even if erroneous, was rechecked and refuted.

Number of years in "Age" and "Life span" columns get calculated as follow:

- Life span is calculated strictly as the difference between birthday and obit. Therefore, when one of these dates is missing, nothing is done. The result is undefined.
- The age field is calculated as the differences of dates between birth and death events (when a person died if a death event has a valid date). Age is not calculated when a death event exists but has no date. Age is calculated using the current date when a death event was not recorded (just the event itself, not its date). For example, for if a person was born in 1700 and has no death event, in 2015 GEDKeeper shows its "Age" as 315 years. To avoid this, for people who have died, even if you do not know when this happened, always add a death event with an empty date.

To make processing of bulk data more easy (for example, for data taken from a census—having many records without a specified obit) GEDKeeper offers a check database service (accessible from the "Service\Tools\Check database" menu). This service checks all person records and when it finds a record having no death event, with age exceeding the most well-known and scientifically approved limits of a human life, the service suggests an automatic fix for the death event (you must select a suggestion and click the "Fix" button). For GEDKeeper the limit of a human life is 122 years (see the "List of the verified oldest people" Wikipedia page). It should be noted that the checking function does not set an obit of a person to the maximum value—it just creates an empty death event as an indication.

Note: When using the Timeline plugin, the age column shows the value calculated for the given year.

See also: Event.