我想用小时、分钟和秒的自定义值填充我的 tm 结构,然后使用 std::put_time() 输出它。
我的代码位于包含日期和时间的自定义类的 to_string 函数中:
std::string Gregorian::to_string() const {
std::ostringstream oss;
struct std::tm *tmTime;
//This is where I add my custom time values
tmTime->tm_hour = hour_;
tmTime->tm_min = minute_;
tmTime->tm_sec = second_;
oss << civil::day_name( day_of_week( to_jd() ) ) << ", ";
oss << gregorian_month_name( month_ ) << ' ' << (unsigned) day_ << ' ';
if( year_ <= 0 )
oss << (-year_ + 1) << " BCE";
else
oss << year_ << " CE, ";
//i'm trying to use std::put_time here but it prints nothing
oss << std::put_time(tmTime, "%r");
return oss.str();
}
我错过了什么重要的东西吗?我已经在网上阅读了很多关于这个的内容。我见过的所有示例都使用本地时间来填充 tm 结构(这显然不是我想要做的)。
所以.. 如果 hour_、minute_ 和 second_ 都等于 0,我希望它打印 12:00:00 am
提前感谢您的帮助。
编辑:输出的示例:
"Wednesday, January 1 1000 CE, "
“CE”之后的空格是时间应该在哪里。
此外,将其更改为:
struct std::tm tmTime;
tmTime.tm_hour = hour_;
tmTime.tm_min = minute_;
tmTime.tm_sec = second_;
和:
oss << std::put_time(&tmTime, "%r");
给我相同的输出。我忘了说我也试过了。