2016-03-18 1 views
3

Я делаю обработки сигналов в реальном масштабе времени:Обработка високосные секунды на суб второй Precission UTC времени арифметике

Мои входы образцы помеченных с временными метками. Мои выходы оценка помеченная с временными метками в UTC

мне нужно, чтобы компенсировать задержки обработки, так что в образце N я буду выходом на оценках образца N-K, K быть моей задержкой обработки.

Компенсация времени должна быть осведомлена о втором значении. то есть, с задержкой 10ms:

INPUT TS = 20150701T000000.000000 
OUTPUT TS = 20150630T235960.990000 

Я подумал о struct tm, как временные метки, используя 61-й секунды. (struct tm < ->TAI) перевод функций.

Любые предложения приветствуются.

ответ

0

Howard Hinnant's timezone library (бесплатно, с открытым исходным кодом, кросс-платформенный, C++ 11) будет обращаться с этим:

#include "tz.h" 
#include <iostream> 
#include <sstream> 

int 
main() 
{ 
    using namespace std; 
    using namespace std::chrono; 
    using namespace date; 
    istringstream in{"20150701T000000.000000"}; 
    utc_time<microseconds> ts; 
    in >> parse("%Y%m%dT%H%M%S", ts); 
    ts -= 10ms; 
    std::cout << format("%Y%m%dT%H%M%S", ts) << '\n'; 
} 

Выход:

20150630T235960.990000