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

FreeBSD Manual Pages

  
 
  

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

NAME
       strftime, strftime_z -- format date and time

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<time.h>

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

       size_t
       strftime_z(const	timezone_t tz, char * restrict	buf,  size_t  maxsize,
	   const char *	restrict format, const struct tm * restrict timeptr);

DESCRIPTION
       The  strftime()	function formats the information from timeptr 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 buffer.	If the
       total number of resulting characters, including	the  terminating  null
       character,  is  not more	than maxsize, strftime() returns the number of
       characters in the buffer, not counting the  terminating	null.	Other-
       wise, zero is returned and the contents of the buffer are undefined.

       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"  (the  ISO  8601
	     date format).

       %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).  This is the year	that includes the greater part
	     of	the week.  (Monday as the first	day of a week).	 See also  the
	     `%V' conversion specification.

       %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 (see
	     ctime(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]. According	to ISO
	     8601 the week containing January 1	is week	1 if it	 has  four  or
	     more  days	in the new year, otherwise it is week 53 of the	previ-
	     ous year, and the next week is week 1.  The year is given by  the
	     `%G' conversion specification.

       %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 abbreviation,	or the empty string if
	     this is not determinable.

       %z    is	replaced by the	offset from the	Prime Meridian in  the	format
	     +HHMM  or	-HHMM  (ISO 8601) as appropriate, with positive	values
	     representing locations east of Greenwich, or by the empty	string
	     if	 this is not determinable.  The	numeric	time zone abbreviation
	     -0000 is used when	the time is Universal Time but local  time  is
	     indeterminate; by convention this is used for locations while un-
	     inhabited,	 and  corresponds  to a	zero offset when the time zone
	     abbreviation begins with "[-]".

       %+    is	replaced by national representation of the date	and time  (the
	     format  is	 similar to that produced by date(1)).	On NetBSD cur-
	     rently this only works for	the C locale.

       %-*   GNU libc extension.  Do not do any	padding	when performing	numer-
	     ical outputs.

       %_*   GNU libc extension.  Explicitly specify space for padding.

       %0*   GNU libc extension.  Explicitly specify zero for padding.

       %%    is	replaced by `%'.

       The strftime_z()	function is similar to strftime(), but it also takes a
       const timezone_t	tz argument.

SEE ALSO
       date(1),	printf(1), ctime(3), printf(3),	strptime(3), tm(3)

STANDARDS
       The strftime() function conforms	to ISO/IEC 9899:1999 ("ISO C99").  The
       `%C', `%D', `%e', `%g', `%G', `%h', `%k', `%l', `%n', `%r', `%R', `%s',
       `%t', `%T', `%u', `%V', and `%v'	conversion specifications  are	exten-
       sions.

       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.

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

       A  return value of zero does not	necessarily indicate an	error.	If the
       resulting string	is an empty string, the	result value is	zero and it is
       not possible to distinguish between success and error.  For example, in
       many locales %p yields an empty string.	This problem can be avoided by
       inserting an extra space	at the beginning of the	format string and then
       skipping	over it	or removing it from the	result.

NetBSD 9.3			 April 5, 2019			   STRFTIME(3)

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

home | help