2015-06-01 3 views
2

Я получаю строку, как 2015-04-29 15:36:16.5761891 +03:00. Я могу легко исключить дату, используя std::get_time.Как получить UTC смещение от строки

std::tm time; 
std::string stringTime = "2015-04-29 15:36:16.5761891 +03:00"; 
std::istringstream stringStream(stringTime); 
stringStream >> std::get_time(&time, "%Y-%m-%d %H:%M:%S"); 

cout << time.tm_year << endl; 
cout << time.tm_mon << endl; 
cout << time.tm_mday << endl; 
cout << time.tm_hour << endl; 
cout << time.tm_min << endl; 
cout << time.tm_sec << endl; 

Это прекрасно работает для меня. Теперь, как я могу извлечь смещение UTC из этой строки?

+0

Если строка всегда имеет этот формат, просто взять все после второго места. – deviantfan

+0

Вы спрашиваете, как получить последние 6 персонажей? –

+0

Строка может быть без смещения. В этом случае мне нужно установить его на локальное смещение –

ответ

2

Вы можете просто продолжайте читать так:

#include <ctime> 
#include <string> 
#include <sstream> 
#include <iomanip> 
#include <iostream> 

int main() 
{ 
    std::tm time; 
    std::string stringTime = "2015-04-29 15:36:16.5761891 +03:00"; 

    std::istringstream stringStream(stringTime); 

    std::string decimals; 
    std::string offset; 
    stringStream >> std::get_time(&time, "%Y-%m-%d %H:%M:%S") >> decimals >> offset; 

    std::cout << time.tm_year << '\n'; 
    std::cout << time.tm_mon << '\n'; 
    std::cout << time.tm_mday << '\n'; 
    std::cout << time.tm_hour << '\n'; 
    std::cout << time.tm_min << '\n'; 
    std::cout << time.tm_sec << '\n'; 

    std::cout << decimals << '\n'; 
    std::cout << offset << '\n'; 
} 

Выход:

115 
3 
29 
15 
36 
16 
.5761891 
+03:00 
Смежные вопросы