Copyright Digital Equipment Corp. All rights reserved.

Example

       #include <string.h>
       #include <stdlib.h>
       #include <stdio.h>
       #include <time.h>
       #include <locale.h>
       #include <errno.h>

       #define NUM_OF_DATES  7
       #define BUF_SIZE 256

       /* This program takes a number of date and time strings and     */
       /* converts them into tm structs using strptime().  These tm    */
       /* structs are then passed to strftime() which will reverse the */
       /* process.  The resulting strings are then compared with the   */
       /* originals and if a difference is found then an error is      */
       /* displayed.                                                   */

       main()
       {
       int count,
           i;
       char buffer[BUF_SIZE];
       char *ret_val;
       struct tm time_struct;
       char dates[NUM_OF_DATES][BUF_SIZE] =
       {
           "Thursday 01 January 1970 00:08:20",
           "Tuesday 29 February 1972 08:26:40",
           "Tuesday 31 December 1991 23:59:59",
           "Wednesday 01 January 1992 00:00:00",
           "Sunday 03 May 1992 13:33:20",
           "Monday 04 May 1992 17:20:00",
           "Friday 15 May 1992 03:20:00"};

       for (i = 0; i < NUM_OF_DATES; i++) {
           /* Convert to a tm structure */
        ret_val = strptime(dates[i], "%A %d %B %Y %T", &time_struct);

           /* Check the return value */
           if (ret_val == (char *) NULL) {
               perror("strptime");
               exit(EXIT_FAILURE);
           }

           /* Convert the time structure back to a formatted string */
       count = strftime(buffer, BUF_SIZE, "%A %d %B %Y %T",&time_struct);

           /* Check the return value */
           if (count == 0) {
               perror("strftime");
               exit(EXIT_FAILURE);
           }

           /* Check the result */
           if (strcmp(buffer, dates[i]) != 0) {
           printf("Error: Converted string differs from the original\n");
           }
           else {
               printf("Successfully converted <%s>\n", dates[i]);
           }
        }
       }

   Running the example program produces the following result:

   Successfully converted <Thursday 01 January 1970 00:08:20>
   Successfully converted <Tuesday 29 February 1972 08:26:40>
   Successfully converted <Tuesday 31 December 1991 23:59:59>
   Successfully converted <Wednesday 01 January 1992 00:00:00>
   Successfully converted <Sunday 03 May 1992 13:33:20>
   Successfully converted <Monday 04 May 1992 17:20:00>
   Successfully converted <Friday 15 May 1992 03:20:00>