将日期时间转换为毫秒 - C++ - 跨平台

Wil*_*nda 3 c++ posix

我想将格式为"20160907-05:00:54.123"的字符串转换为毫秒.我知道strptime在Windows中不可用,我想在Windows和Linux中运行我的程序.我也不能使用第三方库.我可以将字符串标记化并转换它.但是有更优雅的方式就像使用strptime这样做吗?

Shm*_* H. 5

怎么样std::sscanf

#include <iostream>
#include <cstring>

int main() {
    const char *str_time = "20160907-05:00:54.123";
    unsigned int year, month, day, hour, minute, second, miliseconds;

    if (std::sscanf(str_time, "%4u%2u%2u-%2u:%2u:%2u.%3u", &year, &month,
               &day, &hour, &minute, &second,&miliseconds) != 7)
    {
        std::cout << "Parse failed" << std::endl;
    } 
    else
    {
        std::cout << year << month << day << "-" << hour << ":" 
                  << minute << ":" << second << "." << miliseconds
                  << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出(ideone):201697-5:0:54.123.

但是,您应确保输入有效(例如,日期可以在[0,99]范围内).