| .\" ************************************************************************** |
| .\" * _ _ ____ _ |
| .\" * Project ___| | | | _ \| | |
| .\" * / __| | | | |_) | | |
| .\" * | (__| |_| | _ <| |___ |
| .\" * \___|\___/|_| \_\_____| |
| .\" * |
| .\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al. |
| .\" * |
| .\" * This software is licensed as described in the file COPYING, which |
| .\" * you should have received as part of this distribution. The terms |
| .\" * are also available at https://curl.se/docs/copyright.html. |
| .\" * |
| .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| .\" * copies of the Software, and permit persons to whom the Software is |
| .\" * furnished to do so, under the terms of the COPYING file. |
| .\" * |
| .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| .\" * KIND, either express or implied. |
| .\" * |
| .\" ************************************************************************** |
| .TH curl_getdate 3 "October 25, 2021" "libcurl 7.80.0" "libcurl Manual" |
| |
| .SH NAME |
| curl_getdate - Convert a date string to number of seconds |
| .SH SYNOPSIS |
| .B #include <curl/curl.h> |
| .sp |
| .BI "time_t curl_getdate(char *" datestring ", time_t *"now " );" |
| .ad |
| .SH DESCRIPTION |
| \fIcurl_getdate(3)\fP returns the number of seconds since the Epoch, January |
| 1st 1970 00:00:00 in the UTC time zone, for the date and time that the |
| \fIdatestring\fP parameter specifies. The \fInow\fP parameter is not used, |
| pass a NULL there. |
| .SH PARSING DATES AND TIMES |
| A "date" is a string containing several items separated by whitespace. The |
| order of the items is immaterial. A date string may contain many flavors of |
| items: |
| .TP 0.8i |
| .B calendar date items |
| Can be specified several ways. Month names can only be three-letter english |
| abbreviations, numbers can be zero-prefixed and the year may use 2 or 4 digits. |
| Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6. |
| .TP |
| .B time of the day items |
| This string specifies the time on a given day. You must specify it with 6 |
| digits with two colons: HH:MM:SS. To not include the time in a date string, |
| will make the function assume 00:00:00. Example: 18:19:21. |
| .TP |
| .B time zone items |
| Specifies international time zone. There are a few acronyms supported, but in |
| general you should instead use the specific relative time compared to |
| UTC. Supported formats include: -1200, MST, +0100. |
| .TP |
| .B day of the week items |
| Specifies a day of the week. Days of the week may be spelled out in full |
| (using english): `Sunday', `Monday', etc or they may be abbreviated to their |
| first three letters. This is usually not info that adds anything. |
| .TP |
| .B pure numbers |
| If a decimal number of the form YYYYMMDD appears, then YYYY is read as the |
| year, MM as the month number and DD as the day of the month, for the specified |
| calendar date. |
| .PP |
| .SH EXAMPLE |
| .nf |
| time_t t; |
| t = curl_getdate("Sun, 06 Nov 1994 08:49:37 GMT", NULL); |
| t = curl_getdate("Sunday, 06-Nov-94 08:49:37 GMT", NULL); |
| t = curl_getdate("Sun Nov 6 08:49:37 1994", NULL); |
| t = curl_getdate("06 Nov 1994 08:49:37 GMT", NULL); |
| t = curl_getdate("06-Nov-94 08:49:37 GMT", NULL); |
| t = curl_getdate("Nov 6 08:49:37 1994", NULL); |
| t = curl_getdate("06 Nov 1994 08:49:37", NULL); |
| t = curl_getdate("06-Nov-94 08:49:37", NULL); |
| t = curl_getdate("1994 Nov 6 08:49:37", NULL); |
| t = curl_getdate("GMT 08:49:37 06-Nov-94 Sunday", NULL); |
| t = curl_getdate("94 6 Nov 08:49:37", NULL); |
| t = curl_getdate("1994 Nov 6", NULL); |
| t = curl_getdate("06-Nov-94", NULL); |
| t = curl_getdate("Sun Nov 6 94", NULL); |
| t = curl_getdate("1994.Nov.6", NULL); |
| t = curl_getdate("Sun/Nov/6/94/GMT", NULL); |
| t = curl_getdate("Sun, 06 Nov 1994 08:49:37 CET", NULL); |
| t = curl_getdate("06 Nov 1994 08:49:37 EST", NULL); |
| t = curl_getdate("Sun, 12 Sep 2004 15:05:58 -0700", NULL); |
| t = curl_getdate("Sat, 11 Sep 2004 21:32:11 +0200", NULL); |
| t = curl_getdate("20040912 15:05:58 -0700", NULL); |
| t = curl_getdate("20040911 +0200", NULL); |
| .fi |
| .SH STANDARDS |
| This parser handles date formats specified in RFC 822 (including the update in |
| RFC 1123) using time zone name or time zone delta and RFC 850 (obsoleted by |
| RFC 1036) and ANSI C's asctime() format. These formats are the only ones RFC |
| 7231 says HTTP applications may use. |
| .SH AVAILABILITY |
| Always |
| .SH RETURN VALUE |
| This function returns -1 when it fails to parse the date string. Otherwise it |
| returns the number of seconds as described. |
| |
| On systems with a signed 32 bit time_t: if the year is larger than 2037 or |
| less than 1903, this function will return -1. |
| |
| On systems with an unsigned 32 bit time_t: if the year is larger than 2106 or |
| less than 1970, this function will return -1. |
| |
| On systems with 64 bit time_t: if the year is less than 1583, this function |
| will return -1. (The Gregorian calendar was first introduced 1582 so no "real" |
| dates in this way of doing dates existed before then.) |
| .SH "SEE ALSO" |
| .BR curl_easy_escape "(3), " curl_easy_unescape "(3), " |
| .BR CURLOPT_TIMECONDITION "(3), " CURLOPT_TIMEVALUE "(3) " |