C++ Converting a time string to seconds from the epoch

前端 未结 10 590
無奈伤痛
無奈伤痛 2020-12-01 14:53

I have a string with the following format:

2010-11-04T23:23:01Z

The Z indicates that the time is UTC.
I would rather store t

10条回答
  •  眼角桃花
    2020-12-01 15:19

    Using C++11 functionality we can now use streams to parse times:

    The iomanip std::get_time will convert a string based on a set of format parameters and convert them into a struct tz object.

    You can then use std::mktime() to convert this into an epoch value.

    #include 
    #include 
    #include 
    #include 
    
    int main()
    {
        std::tm t = {};
        std::istringstream ss("2010-11-04T23:23:01Z");
    
        if (ss >> std::get_time(&t, "%Y-%m-%dT%H:%M:%S"))
        {
            std::cout << std::put_time(&t, "%c") << "\n"
                      << std::mktime(&t) << "\n";
        }
        else
        {
            std::cout << "Parse failed\n";
        }
        return 0;
    }
    

提交回复
热议问题