
- The C Standard Library
- The C Standard Library
- The C++ Standard Library
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ iomanip Library - put_time Function
Description
This function accesses the output sequence by first constructing an object of type basic_ostream::sentry. Then (if evaluating the sentry object is true), it calls time_put::put (using the stream's selected locale) to perform both the formatting and the insertion operations, adjusting the stream's internal state flags accordingly. Finally, it destroys the sentry object before returning.
It is used to inserts the representation of the time and date information pointed by tmb, formatting it as specified by argument fmt.
Declaration
Following is the declaration for std::put_time function.
template <class charT> /*unspecified*/ put_time (const struct tm* tmb, const charT* fmt);
Parameters
tmb − Pointer to the object of type struct tm with the date and time information to format. struct tm is a class defined in header <ctime>.
fmt − C-string used by time_put::put as format string. It contains any combination of regular characters and special format specifiers. These format specifiers are replaced by the function to the corresponding values to represent the time specified in tmb.
They all begin with a percentage (%) sign, and are shown below −
specifier | Replaced by | Example |
---|---|---|
%a |
Abbreviated weekday name * | Thu |
%A |
Full weekday name * | Thursday |
%b |
Abbreviated month name * | Aug |
%B |
Full month name * | August |
%c |
Date and time representation * | Thu Aug 23 14:55:02 2001 |
%C |
Year divided by 100 and truncated to integer (00-99 ) |
20 |
%d |
Day of the month, zero-padded (01-31 ) |
23 |
%D |
Short MM/DD/YY date, equivalent to %m/%d/%y |
08/23/01 |
%e |
Day of the month, space-padded ( 1-31 ) |
23 |
%F |
Short YYYY-MM-DD date, equivalent to %Y-%m-%d |
2001-08-23 |
%g |
Week-based year, last two digits (00-99 ) |
01 |
%G |
Week-based year | 2001 |
%h |
Abbreviated month name * (same as %b ) |
Aug |
%H |
Hour in 24h format (00-23 ) |
14 |
%I |
Hour in 12h format (01-12 ) |
02 |
%j |
Day of the year (001-366 ) |
235 |
%m |
Month as a decimal number (01-12 ) |
08 |
%M |
Minute (00-59 ) |
55 |
%n |
New-line character ('\n' ) |
|
%p |
AM or PM designation | PM |
%r |
12-hour clock time * | 02:55:02 pm |
%R |
24-hour HH:MM time, equivalent to %H:%M |
14:55 |
%S |
Second (00-61 ) |
02 |
%t |
Horizontal-tab character ('\t' ) |
|
%T |
ISO 8601 time format (HH:MM:SS ), equivalent to %H:%M:%S |
14:55:02 |
%u |
ISO 8601 weekday as number with Monday as 1 (1-7 ) |
4 |
%U |
Week number with the first Sunday as the first day of week one (00-53 ) |
33 |
%V |
ISO 8601 week number (00-53 ) |
34 |
%w |
Weekday as a decimal number with Sunday as 0 (0-6 ) |
4 |
%W |
Week number with the first Monday as the first day of week one (00-53 ) |
34 |
%x |
Date representation * | 08/23/01 |
%X |
Time representation * | 14:55:02 |
%y |
Year, last two digits (00-99 ) |
01 |
%Y |
Year | 2001 |
%z |
ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100) If timezone cannot be termined, no characters |
+100 |
%Z |
Timezone name or abbreviation * If timezone cannot be termined, no characters |
CDT |
%% |
A % sign |
% |
Return Value
Unspecified. This function should only be used as a stream manipulator.
Errors are signaled by modifying the stream's internal state flags −
flag | error |
---|---|
eofbit | - |
failbit | The function failed to format tmb as specified by fmt (it may also be set if the construction of sentry failed). |
badbit | Either the insertion on the stream failed, or some other error happened (such as when this function catches an exception thrown by an internal operation). When set, the integrity of the stream may have been affected. |
Exceptions
Basic guarantee − if an exception is thrown, the object is in a valid state.
It throws an exception of member type failure if the resulting error state flag is not goodbit and member exceptions was set to throw for that state.
Any exception thrown by an internal operation is caught and handled by the function, setting badbit. If badbit was set on the last call to exceptions, the function rethrows the caught exception.
Data races
Accesses the object pointed by tmb and the array pointed by fmt.
Modifies the stream object where it is inserted.
Concurrent access to the same stream object may cause data races, except for the standard stream objects (cout, cerr, clog, wcout, wcerr and wclog) when these are synchronized with stdio (in this case, no data races are initiated, although no guarantees are given on the order in which characters from multiple threads are inserted).
Example
In below example explains about put_time function.
#include <iostream> #include <iomanip> #include <ctime> #include <chrono> int main () { using std::chrono::system_clock; std::time_t tt = system_clock::to_time_t (system_clock::now()); struct std::tm * ptm = std::localtime(&tt); std::cout << "Now (local time): " << std::put_time(ptm,"%c") << '\n'; return 0; }