Новый ответ на старый вопрос с помощью C++ 11 или C++ 14 и это free, open-source library:
#include "tz.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std;
using namespace std::chrono;
auto now = make_zoned(current_zone(), floor<milliseconds>(system_clock::now()));
cout << format("%e/%m/%Y %T", now) << '\n';
}
Это просто выход для меня:
16/01/2017 15:34:32.167
который мой текущий локальная дата и время до миллисекундной точности. Исключив floor<milliseconds>()
, вы автоматически получите любую точность, которую имеет ваш system_clock
.
Если вы хотите результата в виде UTC метки времени вместо локальной временной метки, еще проще:
auto now = floor<milliseconds>(system_clock::now());
cout << format("%e/%m/%Y %T", now) << '\n';
И если вы хотите UTC метки времени, и вы не требовательны к точности или формат , вы можете просто:
cout << system_clock::now() << '\n';
который только выход для меня:
2017-01-16 20:42:11.267245
возможно дубликат [Как получить текущую ти mestamp в миллисекундах с 1970 года именно так, как Java получает] (http://stackoverflow.com/questions/19555121/how-to-get-current-timestamp-in-milliseconds-since-1970-just-the-way-java- получает) –