mirror of
https://github.com/boostorg/release-tools.git
synced 2026-01-19 04:42:10 +00:00
69 lines
2.2 KiB
C++
69 lines
2.2 KiB
C++
// Command line utility to output the date under control of a format string
|
|
|
|
// Copyright 2008 Beman Dawes
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// See http://www.boost.org/LICENSE_1_0.txt
|
|
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
|
|
#include <ctime>
|
|
#include <string>
|
|
#include <iostream>
|
|
#include <cstdlib>
|
|
|
|
using namespace std;
|
|
|
|
int main(int argc, char * argv[])
|
|
{
|
|
if (argc != 2 )
|
|
{
|
|
cerr <<
|
|
"Invoke: strftime format\n"
|
|
"Example: strftime \"The date is %Y-%m-%d in ISO format\""
|
|
"The format codes are:\n"
|
|
" %a Abbreviated weekday name\n"
|
|
" %A Full weekday name\n"
|
|
" %b Abbreviated month name\n"
|
|
" %B Full month name\n"
|
|
" %c Date and time representation appropriate for locale\n"
|
|
" %d Day of month as decimal number (01 - 31)\n"
|
|
" %H Hour in 24-hour format (00 - 23)\n"
|
|
" %I Hour in 12-hour format (01 - 12)\n"
|
|
" %j Day of year as decimal number (001 - 366)\n"
|
|
" %m Month as decimal number (01 - 12)\n"
|
|
" %M Minute as decimal number (00 - 59)\n"
|
|
" %p Current locale's A.M./P.M. indicator for 12-hour clock\n"
|
|
" %S Second as decimal number (00 - 59)\n"
|
|
" %U Week of year as decimal number, with Sunday as first day of week (00 - 53)\n"
|
|
" %w Weekday as decimal number (0 - 6; Sunday is 0)\n"
|
|
" %W Week of year as decimal number, with Monday as first day of week (00 - 53)\n"
|
|
" %x Date representation for current locale\n"
|
|
" %X Time representation for current locale\n"
|
|
" %y Year without century, as decimal number (00 - 99)\n"
|
|
" %Y Year with century, as decimal number\n"
|
|
" %z, %Z Either the time-zone name or time zone abbreviation, depending on registry settings; no characters if time zone is unknown\n"
|
|
" %% Percent sign\n"
|
|
;
|
|
return 1;
|
|
}
|
|
|
|
string format = argv[1];
|
|
time_t t = time(0);
|
|
tm * tod = localtime(&t);
|
|
if (!tod)
|
|
{
|
|
cerr << "error: localtime function failed\n";
|
|
return 1;
|
|
}
|
|
char* s = new char [format.size() + 256];
|
|
if (strftime( s, format.size() + 256, format.c_str(), tod ) == 0 )
|
|
{
|
|
cerr << "error: buffer overflow\n";
|
|
return 1;
|
|
}
|
|
|
|
cout << s;
|
|
return 0;
|
|
}
|