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

FreeBSD Manual Pages

  
 
  

home | help
std::get_time(3)	      C++ Standard Libary	      std::get_time(3)

NAME
       std::get_time - std::get_time

Synopsis
	  Defined in header <iomanip>
	  template<  class CharT >					(since
       C++11)
	  /*unspecified*/ get_time( std::tm* tmb, const	CharT* fmt );

	  When used in an expression in	 >>  get_time(tmb,  fmt),  parses  the
       character input as a
	  date/time  value  according  to  format  string fmt according	to the
       std::time_get facet
	  of the locale	currently imbued in the	input stream in. The resultant
       value is	stored
	  in a std::tm object pointed to by tmb.

Parameters
	  tmb -	valid pointer to the std::tm object where the result  will  be
       stored
		pointer	 to a null-terminated CharT string specifying the con-
       version format

		The format string consists of zero or more  conversion	speci-
       fiers, whitespace
		characters,  and ordinary characters (except %). Each ordinary
       character is
		expected to match one character	in the input stream  in	 case-
       insensitive
		comparison. Each whitespace character matches arbitrary	white-
       space in	the
		input  string.	Each  conversion  specification	 begins	with %
       character,
		optionally followed by E or O modifier (ignored	if unsupported
       by the locale),
		followed by the	character that determines the behavior of  the
       specifier. The
		format specifiers match	the POSIX function strptime():

		Conversion					   Explanation
       Writes to fields
		specifier
		    %	    matches  a	literal	  %.   The   full   conversion
       (none)
			   specification must be %%
		    t		     matches	       any	    whitespace
       (none)
		    n		    matches	      any	    whitespace
       (none)
						     Year
		    Y	    parses  full  year	as  a  4 digit decimal number,
       tm_year
			   leading zeroes permitted but	not required
			   parses year in the alternative representation,
		    EY	   e.g.23 (year	Heisei 23) which writes	2011   tm_year
			   to tm_year in ja_JP locale
			   parses last 2 digits	of year	as a decimal number.
		    y	   Range [69,99]  results  in  values  1969  to	 1999,
       tm_year
			   range [00,68] results in 2000-2068
			   parses last 2 digits	of year	using the
		    Oy	     alternative   numeric  system,  e.g.   is	parsed
       tm_year
			   as 11 in ja_JP locale
		    Ey	   parses year as  offset  from	 locale's  alternative
       tm_year
			   calendar period %EC
		    C	    parses  the	 first	2  digits of year as a decimal
       tm_year
			   number (range [00,99])
			   parses the name of the base year (period) in	the
		    EC	     locale's	alternative    representation,	  e.g.
       tm_year
			   (Heisei era)	in ja_JP
						    Month
		    b	     parses   the   month   name,   either   full   or
       tm_mon
			   abbreviated,	e.g. Oct
		    h			synonym		     of		     b
       tm_mon
		    B			synonym		     of		     b
       tm_mon
			   parses the month as a decimal number	(range
		    m	    [01,12]),  leading	zeroes	 permitted   but   not
       tm_mon
			   required
		    Om	    parses  the	 month	using  the alternative numeric
       tm_mon
			   system, e.g.	 parses	as 12 in ja_JP locale
						     Week
			   parses the week of the year as a decimal number
		    U	   (Sunday is  the  first  day	of  the	 week)	(range
       tm_year,	tm_wday,
			   [00,53]),   leading	 zeroes	  permitted   but  not
       tm_yday
			   required
			   parses the week of the year,	as by  %U,  using  the
       tm_year,	tm_wday,
		    OU	   alternative numeric system, e.g.  parses as tm_yday
			   52 in ja_JP locale
			   parses the week of the year as a decimal number
		    W	    (Monday  is	 the  first  day  of  the week)	(range
       tm_year,	tm_wday,
			   [00,53]),  leading	zeroes	 permitted   but   not
       tm_yday
			   required
			   parses  the	week  of the year, as by %W, using the
       tm_year,	tm_wday,
		    OW	   alternative numeric system, e.g.  parses as tm_yday
			   52 in ja_JP locale
					    Day	of the year/month
			   parses day of the year as a decimal number (range
		    j	    [001,366]),	 leading  zeroes  permitted  but   not
       tm_yday
			   required
	  fmt -		   parses the day of the month as a decimal number
		    d	    (range  [01,31]), leading zeroes permitted but not
       tm_mday
			   required
			   parses the day of the month using the alternative
		    Od	   numeric system, e.g.	 parses	as 27 in ja_JP tm_mday
			   locale, leading zeroes permitted but	not required
		    e			synonym		     of		     d
       tm_mday
		    Oe			synonym		     of		    Od
       tm_mday
					       Day of the week
		    a	   parses the name of the  day	of  the	 week,	either
       tm_wday
			   full	or abbreviated,	e.g. Fri
		    A			synonym		     of		     a
       tm_wday
		    w	   parses weekday as a decimal	number,	 where	Sunday
       tm_wday
			   is 0	(range [0-6])
			   parses weekday as a decimal number, where Sunday
		    Ow	    is	0,  using the alternative numeric system, e.g.
       tm_wday
			    parses as 2	in ja_JP locale
					     Hour, minute, second
			   parses the hour as a	decimal	number,	24 hour
		    H	   clock (range	 [00-23]),  leading  zeroes  permitted
       tm_hour
			   but not required
			   parses hour from 24-hour clock using	the
		    OH	     alternative   numeric  system,  e.g.   parses  as
       tm_hour
			   18 in ja_JP locale
			   parses hour as a decimal number, 12 hour clock
		    I	   (range [01,12]), leading zeroes permitted  but  not
       tm_hour
			   required
			   parses hour from 12-hour clock using	the
		    OI	    alternative	 numeric  system,  e.g.	   reads as 06
       tm_hour
			   in ja_JP locale
			   parses minute as a decimal number (range
		    M	    [00,59]),  leading	zeroes	 permitted   but   not
       tm_min
			   required
		    OM	     parses   minute  using  the  alternative  numeric
       tm_min
			   system, e.g.	 parses	as 25 in ja_JP locale
			   parses second as a decimal number (range
		    S	    [00,60]),  leading	zeroes	 permitted   but   not
       tm_sec
			   required
		    OS	     parses   second  using  the  alternative  numeric
       tm_sec
			   system, e.g.	 parses	as 24 in ja_JP locale

Other
			   parses the locale's standard	date and time string
		    c	   format, e.g.	 Sun  Oct  17  04:41:13	 2010  (locale
       all
			   dependent)
			   parses the locale's alternative date	and time
		    Ec	   string format, e.g. expecting 23 (year      all
			   Heisei 23) instead of 2011 (year 2011) in ja_JP
			   locale
		    x	    parses  the	 locale's standard date	representation
       all
			   parses the locale's alternative date
		    Ex	   representation, e.g.	expecting 23 (year     all
			   Heisei 23) instead of 2011 (year 2011) in ja_JP
			   locale
		    X	   parses the locale's	standard  time	representation
       all
		    EX	      parses	the    locale's	   alternative	  time
       all
			   representation
		    D	     equivalent	  to	"%m    /    %d	  /    %y    "
       tm_mon, tm_mday,
									     tm_year
		    r	    parses  locale's  standard	12-hour	clock time (in
       tm_hour,	tm_min,
			   POSIX,     "%I     :	    %M	   :	  %S	  %p")
       tm_sec
		    R		 equivalent	  to	   "%H	    :	   %M"
       tm_hour,	tm_min
		    T	      equivalent    to	  "%H	 :    %M     :	   %S"
       tm_hour,	tm_min,
									     tm_sec
		    p	    parses  the	 locale's  equivalent  of a.m. or p.m.
       tm_hour

		Note: tm_isdst is not written to, and needs to be set  explic-
       itly for	use with
		functions such as mktime

Return value
	  An object of unspecified type	such that

	    *  if  in  is an object of type std::basic_istream<CharT, Traits>,
       the expression in
	      >> get_time(tmb, fmt)
		 * has type std::basic_istream<CharT, Traits>&
		 * has value in
		 * behaves as if it called f(in, tmb, fmt)

	  where	the function f is defined as:

	template<class CharT, class Traits>
	void f(std::basic_ios<CharT, Traits>& str, std::tm* tmb, const	CharT*
       fmt)
	{
	    using Iter = std::istreambuf_iterator<CharT, Traits>;
	    using TimeGet = time_get<CharT, Iter>;

	    std::ios_base::iostate err = std::ios_base::goodbit;
	    const TimeGet& tg =	std::use_facet<TimeGet>(str.getloc());

	    tg.get(Iter(str.rdbuf()), Iter(), str, err,	tmb,
		fmt, fmt + Traits::length(fmt));

	    if (err != std::ios_base::goodbit)
		str.setstate(err);
	}

Notes
	  As  specified	 in  std::time_get::do_get, which this function	calls,
       it's unspecified
	  if this function zero	out the	fields in *tmb that are	 not  set  di-
       rectly by the
	  conversion  specifiers  that appear in fmt: portable programs	should
       initialize every
	  field	of *tmb	to zero	before calling std::get_time.

Example
	  Note:	choose clang or	gcc >= 12.1 to observe the  output.  libstdc++
       before 12.1 does
	  not correctly	implement the %b specifier: bug	#78714.

       // Run this code

	#include <iomanip>
	#include <iostream>
	#include <locale>
	#include <sstream>

	int main()
	{
	    std::tm t =	{};
	    std::istringstream ss("2011-Februar-18 23:12:34");
	    ss.imbue(std::locale("de_DE.utf-8"));
	    ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S");

	    if (ss.fail())
		std::cout << "Parse failed\n";
	    else
		std::cout << std::put_time(&t, "%c") <<	'\n';
	}

Possible output:
	Sun Feb	18 23:12:34 2011

See also
	  time_get  parses  time/date  values from an input character sequence
       into std::tm
		   (class template)
	  put_time formats and outputs a  date/time  value  according  to  the
       specified format
	  (C++11)  (function template)
	  parse	   parses a chrono object from a stream
	  (C++20)  (function template)

http://cppreference.com		  2024.06.10		      std::get_time(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::get_time&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help