Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
STRFTIME(3)		    Library Functions Manual		   STRFTIME(3)

NAME
       strftime, strftime_l -- format date and time

SYNOPSIS
       #include	<time.h>

       size_t
       strftime(char *buf,	   size_t maxsize,	   const char *format,
	   const struct	tm *timeptr);

       size_t
       strftime_l(char *buf,	    size_t maxsize,	   const char *format,
	   const struct	tm *timeptr, locale_t locale);

DESCRIPTION
       These  functions	 format	 the information from timeptr (as described in
       mktime(3)) into the buffer buf according	to the string  pointed	to  by
       format.

       The  format  string  consists of	zero or	more conversion	specifications
       and ordinary characters.	 All ordinary characters are  copied  directly
       into the	buffer.	 A conversion specification consists of	a percent sign
       `%' and one other character.

       No more than maxsize characters will be placed into the array.

       Each  conversion	specification is replaced by the characters as follows
       which are then copied into the buffer.

       %A    is	replaced by the	locale's full weekday name.

       %a    is	replaced by the	locale's abbreviated weekday name.

       %B    is	replaced by the	locale's full month name.

       %b or %h
	     is	replaced by the	locale's abbreviated month name.

       %C    is	replaced by the	century	(a year	divided	by 100	and  truncated
	     to	an integer) as a decimal number	(00-99).

       %c    is	replaced by the	locale's appropriate date and time representa-
	     tion.

       %D    is	replaced by the	date in	the format "%m/%d/%y".

       %d    is	replaced by the	day of the month as a decimal number (01-31).

       %e    is	 replaced by the day of	month as a decimal number (1-31); sin-
	     gle digits	are preceded by	a blank.

       %F    is	replaced by the	date in	the format "%Y-%m-%d".

       %G    is	replaced by the	ISO 8601 year with century as a	 decimal  num-
	     ber.

       %g    is	 replaced  by  the  ISO	8601 year without century as a decimal
	     number (00-99).

       %H    is	replaced by the	hour  (24-hour	clock)	as  a  decimal	number
	     (00-23).

       %I    is	 replaced  by  the  hour  (12-hour  clock) as a	decimal	number
	     (01-12).

       %j    is	replaced by the	day of the year	as a decimal number (001-366).

       %k    is	replaced by the	hour  (24-hour	clock)	as  a  decimal	number
	     (0-23); single digits are preceded	by a blank.

       %l    is	 replaced  by  the  hour  (12-hour  clock) as a	decimal	number
	     (1-12); single digits are preceded	by a blank.

       %M    is	replaced by the	minute as a decimal number (00-59).

       %m    is	replaced by the	month as a decimal number (01-12).

       %n    is	replaced by a newline.

       %p    is	replaced by the	locale's equivalent of either "AM" or "PM".

       %R    is	replaced by the	time in	the format "%H:%M".

       %r    is	replaced by the	locale's representation	of 12-hour clock  time
	     using AM/PM notation.

       %S    is	replaced by the	second as a decimal number (00-60).  The range
	     of	 seconds  is (00-60) instead of	(00-59)	to allow for the peri-
	     odic occurrence of	leap seconds.

       %s    is	replaced by the	number of seconds since	the  Epoch,  UTC  (see
	     mktime(3)).

       %T    is	replaced by the	time in	the format "%H:%M:%S".

       %t    is	replaced by a tab.

       %U    is	 replaced  by the week number of the year (Sunday as the first
	     day of the	week) as a decimal number (00-53).

       %u    is	replaced by the	weekday	(Monday	as the first day of the	 week)
	     as	a decimal number (1-7).

       %V    is	 replaced  by the week number of the year (Monday as the first
	     day of the	week) as a decimal number (01-53).  If the  week  con-
	     taining  January 1	has four or more days in the new year, then it
	     is	week 1;	otherwise it is	week 53	of the previous	year, and  the
	     next week is week 1.

       %v    is	replaced by the	date in	the format "%e-%b-%Y".

       %W    is	 replaced  by the week number of the year (Monday as the first
	     day of the	week) as a decimal number (00-53).

       %w    is	replaced by the	weekday	(Sunday	as the first day of the	 week)
	     as	a decimal number (0-6).

       %X    is	replaced by the	locale's appropriate time representation.

       %x    is	replaced by the	locale's appropriate date representation.

       %Y    is	replaced by the	year with century as a decimal number.

       %y    is	 replaced  by  the  year  without  century as a	decimal	number
	     (00-99).

       %Z    is	replaced by the	time zone name,	or by the empty	string if this
	     is	not determinable.

       %z    is	replaced by the	offset from  UTC  in  the  format  "+HHMM"  or
	     "-HHMM"  as  appropriate, with positive values representing loca-
	     tions east	of Greenwich, or by the	empty string if	 this  is  not
	     determinable.

       %%    is	replaced by `%'.

       %+    is	replaced by the	date and time in date(1) format.

       The  OpenBSD  implementation  always  uses the C	locale and ignores the
       global locale, the thread-specific locale, and the locale argument.

RETURN VALUES
       If the total number of resulting	characters, including the  terminating
       NUL  character, is not more than	maxsize, strftime() returns the	number
       of characters placed in the array, not counting	the  terminating  NUL.
       Otherwise, zero is returned.

SEE ALSO
       date(1),	  printf(1),   ctime(3),  getenv(3),  printf(3),  strptime(3),
       time(3),	tzset(3), tzfile(5)

STANDARDS
       The strftime() function conforms	to ISO/IEC 9899:1999 ("ISO C99"),  and
       strftime_l()  to	 IEEE Std 1003.1-2008 ("POSIX.1"), except that the `E'
       and `O' conversion modifiers are	ignored	by this	implementation.

       The `%k', `%l', `%s', `%v', and `%+' conversion specifications are  ex-
       tensions.

       Use  of	the  ISO  8601	conversions may	produce	non-intuitive results.
       Week 01 of a year is per	definition the first week which	has the	Thurs-
       day in this year, which is equivalent to	the week  which	 contains  the
       fourth day of January.  In other	words, the first week of a new year is
       the  week  which	has the	majority of its	days in	the new	year.  Week 01
       might also contain days from the	previous year and the week before week
       01 of a year is the last	week (52 or 53)	of the previous	year  even  if
       it  contains days from the new year.  A week starts with	Monday (day 1)
       and ends	with Sunday (day 7).  For example, the first week of the  year
       1997 lasts from 1996-12-30 to 1997-01-05.

HISTORY
       A  predecessor to strftime(), ptime(), first appeared in	Version	1 AT&T
       UNIX.  The strftime() function has been	available  since  4.3BSD-Reno,
       and strftime_l()	since OpenBSD 6.2.

AUTHORS
       Keith Bostic implemented	the BSD	version	of strftime() in 1989.

CAVEATS
       On systems other	than OpenBSD, the LC_TIME locale(1) category can cause
       erratic output; see CAVEATS in setlocale(3) for details.

BUGS
       There is	no conversion specification for	the phase of the moon.

       Note  that while	this implementation of strftime() will always NUL ter-
       minate buf, other implementations may not do so	when  maxsize  is  not
       large  enough to	store the entire time string.  The contents of buf are
       implementation specific in this case.

OpenBSD	7.3			 May 16, 2019			   STRFTIME(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=strftime&manpath=OpenBSD+7.3>

home | help