This can be done using the std::mktime
and std::localtime
functions. These functions are not just POSIX, they are mandated by the C++ Standard (C++03 §20.5).
#include <ctime>
std::tm time_in = { 0, 0, 0, // second, minute, hour
4, 9, 1984 - 1900 }; // 1-based day, 0-based month, year since 1900
std::time_t time_temp = std::mktime( & time_in );
// the return value from localtime is a static global - do not call
// this function from more than one thread!
std::tm const *time_out = std::localtime( & time_temp );
std::cout << "I was born on (Sunday = 0) D.O.W. " << time_out->tm_wday << '
';
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…