getdate(3C)getdate(3C)NAMEgetdate() - convert user format date and time
The function converts user definable date and/or time specifications
pointed to by string into a The structure declaration is in the header
file (see ctime(3C)).
User-supplied templates are used to parse and interpret the input
string. The templates are text files created by the user and identi‐
fied via the environment variable should be set to indicate the full
path name of the template file. The first line in the template that
matches the input specification is used for interpretation and conver‐
sion into the internal time format. Upon successful completion,
returns a pointer to a otherwise, it returns NULL and the symbol is set
to indicate the error.
The following field descriptors are supported:
abbreviated weekday name
full weekday name
abbreviated month name
full month name
locale's appropriate date and time representation
century number (00 through 99; leading zeros are permitted but
day of the month (01 through 31; the leading 0 is optional)
abbreviated month name
hour (00 through 23)
hour (01 through 12)
month number (01 through 12)
minute (00 through 59)
locale's equivalent of either
AM or PM
seconds (00 through 61)
insert a tab
weekday number (Sunday = 0 through Saturday = 6)
locale's appropriate date representation
locale's appropriate time representation
year without century (00 through 99). For inputs
69-99, the 20th century (1900s) is assumed, and for
inputs 00-68, the 21st century (2000s) is assumed.
year as ccyy (e.g., 1986)
time zone name or no characters if no time zone exists.
If the time zone supplied by is not the same as the
time zone expects, an invalid specification error is
returned. calculates the expected time zone from the
Month and weekday names may consist of any combination of uppercase and
lowercase letters. The user can request that the input date or time
specification be in a specific language by setting the category (see
For descriptors that allow leading zeros, leading zeros are optional.
However, the number of digits used for those descriptors must not
exceed two, including leading zeros. Extra whitespace in either the
template file or in string is ignored.
The field descriptors and are not supported if they include unsupported
The following example shows the possible contents of a template:
The following are examples of valid input specifications for the above
If the category is set to a German locale that includes as a weekday
name and as a month name, the following would be valid:
This example shows how local date and time specification can be defined
in the template:
│ Invocation │ Line in Template │
│getdate("11/27/86") │ %m/%d/%y │
│getdate("27.11.86") │ %d.%m.%y │
│getdate("86-11-27") │ %y-%m-%d │
│getdate("Friday 12:00:00") │ %A %H:%M:%S │
The following rules apply when converting the input specification into
the internal format:
· If only the weekday is given, today is assumed if the given
day is equal to the current day, and next week if it is less.
· If only the month is given, the current month is assumed if
the given month is equal to the current month, and next year
if it is less and no year is given (the first day of the
month is assumed if no day is given).
· If no hour, minute and second are given, the current hour,
minute and second are assumed.
· If no date is given, today is assumed if the given hour is
greater than the current hour and tomorrow is assumed if it
The following examples help to illustrate the above rules assuming that
the current date is and the category is set to the default locale.
│ │ Line in │ │
│ Input │ Template │ Date │
│Mon │ %a │ Mon Sep 22 12:19:47 EDT 1986 │
│Sun │ %a │ Sun Sep 28 12:19:47 EDT 1986 │
│Fri │ %a │ Fri Sep 26 12:19:47 EDT 1986 │
│September │ %B │ Mon Sep 1 12:19:47 EDT 1986 │
│January │ %B │ Thu Jan 1 12:19:47 EST 1987 │
│December │ %B │ Mon Dec 1 12:19:47 EST 1986 │
│Sep Mon │ %b %a │ Mon Sep 1 12:19:47 EDT 1986 │
│Jan Fri │ %b %a │ Fri Jan 2 12:19:47 EST 1987 │
│Dec Mon │ %b %a │ Mon Dec 1 12:19:47 EST 1986 │
│Jan Wed 1989 │ %b %a %Y │ Wed Jan 4 12:19:47 EST 1989 │
│Fri 9 │ %a %H │ Fri Sep 26 09:00:00 EDT 1986 │
│Feb 10:30 │ %b %H:%S │ Sun Feb 1 10:30:00 EST 1987 │
│10:30 │ %H:%M │ Tue Sep 23 10:30:00 EDT 1986 │
│13:30 │ %H:%M │ Mon Sep 22 13:30:00 EDT 1986 │
converts user format date and time. Also see the section.
Upon failure, returns NULL and the symbol is set to indicate the error.
The following is a complete list of the settings and their interpreta‐
environment variable is null or undefined,
the template file cannot be opened for reading,
failed to get file status information,
the template file is not a regular file,
an error is encountered while reading the template file,
memory allocation failed (not enough memory available),
there is no line in the template that matches the input,
invalid input specification. For example,
February 31; or the time specified cannot be represented in
the data type in 32-bit HP-UX (which represents Tuesday Janu‐
ary 19 03:14:07 UTC, 2038) or exceeds the maximum date sup‐
ported in 64-bit HP-UX (which is Friday December 31 23:59:59
The return value for points to data whose content is overwritten by
each call by the same thread.
is an obsolescent interface supported only for compatibility with
existing DCE applications. New multi-threaded applications should use
SEE ALSOctime(3C), ctype(3C), setlocale(3C), strftime(3C), thread_safety(5).