Получить текущую дату и время в миллисекундах только со стандартной библиотекой на C ++ - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь напечатать временную метку, подобную этой.

2018-05-24T20:16:07.339271

Я не хочу использовать Boost или любые сторонние библиотеки.Я хочу использовать только стандартную библиотеку.Я использую Clang 6, так что я должен быть в состоянии использовать C ++ 17. При необходимости.

Я начал смотреть на chrono и у меня что-то вроде этого.

auto now = std::chrono::high_resolution_clock::now();

Но яЯ не уверен, как получить формат даты и времени, который я хочу сверху.

Ответы [ 3 ]

0 голосов
/ 25 мая 2018
standard library c++ does not provide a proper date type, so you can use   
structs and functions from c which is inherited on c++. <ctime>  header
file need to include in c++ program. i think below code will help you.

    time_t now = time(0);
    cout<<now<<endl;
    tm *lt = localtime(&now);
0 голосов
/ 25 мая 2018

В следующем коде используется только стандарт C ++.Данные, содержащиеся в * loc_time и milli_secs , могут использоваться для получения желаемого выхода по местному времени.Чтобы получить вывод в UTC, используйте std :: gmtime вместо std :: localtime.

// get actual system time
const auto now = std::chrono::system_clock::now();

// get seconds since 1970/1/1 00:00:00 UTC
const auto sec_utc = std::chrono::system_clock::to_time_t(now);

// get pointer to tm struct (not thread safe!)
const auto loc_time = std::localtime(&sec_utc);

// get time_point from sec_utc (note: no milliseconds)
const auto now_s = std::chrono::system_clock::from_time_t(sec_utc);

// get milliseconds (difference between now and now_s
const auto milli_secs = std::chrono::duration<double, std::milli>(now - now_s).count() * .001;
0 голосов
/ 25 мая 2018

думаю, ваша лучшая ставка использует std::localtime + std::put_time

...