C++: вернуть строку string с датой и временем, отформатированными с учётом локали
Собственно, пример на возможности библиотеки <ctime>
, она же <time.h>
. Функция gettime
возвращает string
с нужной информацией,
можно форматировать строку для функции strftime
и по другому.
Классическая функция localtime
, возвращающая указатель, считается в новых версиях Studio небезопасной, вместо неё используем localtime_s
.
#include <iostream> #include <clocale> #include <ctime> using namespace std; //Вернуть полную строку даты и времени в соответствии с локалью string gettime (void) { time_t now = time(0); //Получить метку времени по Гринвичу struct tm timeinfo; localtime_s (&timeinfo,&now); //Локализовать время char *format = "%A, %d %B %Y, %H:%M:%S"; //Сделать строку формата, у нас "Monday, 20 March 2017, 13:08:23" char buffer[80]; strftime (buffer, 80, format, &timeinfo); //Вывести время по формату в буфер string str_buffer(buffer); //Переписать буфер в объект string return str_buffer; //и вернуть этот объект } int main() { setlocale(LC_ALL, "Russian"); string mytime = gettime(); cout << mytime.c_str(); cin.sync(); cin.get(); return 0; }
20.03.2017, 14:02 [4746 просмотров]