Open In App

asctime() and asctime_s() functions in C with Examples

Improve
Improve
Like Article
Like
Save
Share
Report

asctime() function

The asctime() function returns the pointer to the string that contains the information stored in the structure of the struct tm type. This function is used to return the local time defined by the system in string format. This function is defined in <time.h> header file.

Syntax

char *asctime(const struct tm* tm_ptr);

Parameters

  • This function accepts single parameter time_ptr i.e. pointer to the struct tm object to be converted.

Return Value

This function returns a pointer to a static null-terminated character string that contains the calendar time in the form “Www Mmm dd hh:mm:ss yyyy”, where:

  • Www: represents the day in three-letter abbreviated (Mon, Tue, Wed.., )
  • Mmm: represents the month in three-letter abbreviated (Jan, Feb, Mar.., )
  • dd: represents the date in two digits (01, 02, 10, 21, 31.., )
  • hh: represents the hour (11, 12, 13, 22…, )
  • mm: represents the minutes (10, 11, 12, 45…, )
  • ss: represents the seconds (10, 20, 30…, )
  • yyyy: represents the year in four digits (2000, 2001, 2019, 2020…, )

Example

The below C program demonstrates the asctime() function.

C




// C program to demonstrate
// the asctime() function
 
#include <stdio.h>
#include <time.h>
 
int main()
{
    struct tm* ptr;
    time_t lt;
    lt = time(NULL);
    ptr = localtime(&ptr);
 
    // using the asctime() function
    printf("%s", asctime(ptr));
 
    return 0;
}


Output

Thu Jan  1 00:00:00 1970

asctime_s() function

This function is used to convert the given calendar time into a textual representation but unlike asctime() function, the asctime_s() function require the user to provide a string buffer to store the formatted time string.

We can’t modify the output calendar time in asctime() function whereas we can modify the calendar time in asctime_s() function. The general representation of asctime_s is “Www Mmm dd hh:mm:ss yyyy“.

Syntax

errno_t asctime_s(char *buf, rsize_t bufsz, const struct tm *time_ptr)

Parameters

  • This function accepts three parameters:  
    • time_ptr: pointer to a const struct tm object specifying the time to print
    • buf: pointer to a buffer provided by the user that must be of at least 26 bytes in length
    • bufsz: the size of the buffer provided by the user

Return Value

  • It returns an integer value based on the status of the operation. It returns ‘0’ on success and non-zero vlaue on failure.

Note: In some C-compilers asctime_s() won’t be supported. We can use strftime() function instead of asctime_s() function.

Example

The below C program demonstrates the asctime_s() function in C.

C




// __STDC_WANT_LIB_EXT1__ is a User defined
// standard to get astime_s() function to work
#define __STDC_WANT_LIB_EXT1__ 1
 
#include <stdio.h>
#include <time.h>
 
int main(void)
{
    struct tm tm = *localtime(&(time_t){ time(NULL) });
    printf("%s", asctime(&tm));
 
// Calling C-standard to execute
// asctime_s() function
#ifdef __STDC_LIB_EXT1__
 
    char str[50];
 
    // Using the asctime_s() function
    asctime_s(str, sizeof str, &tm);
 
    // Print the current time
    // using the asctime_s() function
    printf("%s", str);
#endif
}


Output

Sun Jun  4 17:25:35 2023

Conclusion

asctime() function returns a pointer to a static buffer that contains the date and time in the textual format whereas asctime_s() function require the user to provide the buffer to store the time converted in string format and it returns an error code which is an integer value that represent the final status of the operation.



Last Updated : 04 Jun, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads