Показать день, месяц и год с помощью std :: chrono? - PullRequest
0 голосов
/ 14 мая 2018

Я прочитал, что могу показать текущий день, месяц и год с std::chrono, но как я могу это сделать?

// Example program
#include <iostream>
#include <string>
#include <chrono>

int main()
{
  using namespace std::chrono;
  cout << std::chrono::day;
}

Я делаю этот код, но он не 'я всегда получаю это

 error: 'day' is not a member of 'std::chrono

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Другой подход, основанный на std: strftime :

#include <iomanip>
#include <ctime>
#include <chrono>
#include <iostream>

int main()
{
    auto now_c = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
    std::tm ptm;
    localtime_s(&ptm, &now_c);
    char buffer[80];
    std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S ", &ptm);
    std::cout << buffer;
}

Результат:

2018-05-14 19: 33: 11

(localtime_s находится вне пространства имен std и использует немного другой интерфейс)

0 голосов
/ 14 мая 2018

std::put_time - это то, что вам нужно:

#include <chrono>
#include <iostream>
#include <iomanip>
#include <ctime>    

int main()
{
    auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
    std::cout << std::put_time(std::localtime(&now), "%Y-%m-%d") << "\n";
}

Печать:

2018-05-14

...