【问题标题】:C++: Getting the Current Time as a W3C UTC Time StringC++:获取当前时间作为 W3C UTC 时间字符串
【发布时间】:2013-05-24 20:36:51
【问题描述】:

如何将当前时间作为 W3C UTC 时间字符串获取,如 W3C Date and Time Formats (Profile of ISO 8601) 中记录的那样?

具体来说,这是我所追求的格式:

yyyy-mm-ddThh:mm:ssZ

例子:

2013-05-24T20:07:47Z

注意:我使用的是 Visual Studio 2010

【问题讨论】:

    标签: c++ windows visual-studio-2010 time utc


    【解决方案1】:

    这是我的解决方案。 Visual Studio 2010 参考:time()gmtime_s()

    #include <iomanip>
    #include <sstream>
    #include <time.h>
    
    /**
     * Get the current time as a W3C UTC time string.
     *
     * @return A time string; the empty string if something goes wrong.
     */
    std::string GetUTCTimeString(void)
    {
        time_t seconds_since_the_epoch;
        struct tm tm_struct;
        errno_t err;
        std::ostringstream buf;
    
        // Return the time as seconds elapsed since midnight, January 1, 1970,
        // or -1 in the case of an error.
        time(&seconds_since_the_epoch);
    
        if (seconds_since_the_epoch == -1) {
            return "";
        }
    
        // Convert the time in seconds to the time structure.
        err = gmtime_s(&tm_struct, &seconds_since_the_epoch);
    
        if (err) {
            return "";
        }
    
        // Format the structure as a W3C UTC date/time string with the special
        // UTC designator 'Z'.
        buf
            <<        std::setw(4) << std::setfill('0') << tm_struct.tm_year + 1900
            << "-" << std::setw(2) << std::setfill('0') << tm_struct.tm_mon + 1
            << "-" << std::setw(2) << std::setfill('0') << tm_struct.tm_mday
            << "T" << std::setw(2) << std::setfill('0') << tm_struct.tm_hour
            << ":" << std::setw(2) << std::setfill('0') << tm_struct.tm_min
            << ":" << std::setw(2) << std::setfill('0') << tm_struct.tm_sec
            << "Z";
    
        return buf.str();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 2011-08-18
      相关资源
      最近更新 更多