C++ put_time是否有一个转换说明符,该说明符输出一个月中没有前导字符的一位数天数

C++ put_time是否有一个转换说明符,该说明符输出一个月中没有前导字符的一位数天数,c++,datetime,iomanip,conversion-specifier,dayofmonth,C++,Datetime,Iomanip,Conversion Specifier,Dayofmonth,为每月的输出日提供2个转换说明符: %d:“月份中的一天,零填充(01-31)” %e:“每月的一天,填充空格(1-31)” 请注意,这两个转换说明符都不允许我输出一个月中的非填充日。例如,给定tm tmb,如果我想将每月的日期输出为: 2018年2月8日 我可以这样做:cout为了回答这个问题,我从这里提取了我认为是一个完整的转换说明符列表:并将它们捆绑到一个: 有问题的字段是tmb.tmmday,它填充了8。因此,这里需要的是“8”表中的一个值。快速搜索将证明没有。因此,您的问题的答案是:没

为每月的输出日提供2个转换说明符:

  • %d
    :“月份中的一天,零填充(01-31)”
  • %e
    :“每月的一天,填充空格(1-31)”
  • 请注意,这两个转换说明符都不允许我输出一个月中的非填充日。例如,给定
    tm tmb
    ,如果我想将每月的日期输出为:

    2018年2月8日


    我可以这样做:
    cout为了回答这个问题,我从这里提取了我认为是一个完整的转换说明符列表:并将它们捆绑到一个:

    有问题的字段是
    tmb.tmmday
    ,它填充了
    8
    。因此,这里需要的是“8”表中的一个值。快速搜索将证明没有。因此,您的问题的答案是:没有一个转换说明符可以输出一个月中没有前导字符的一位数天数。您必须使用与您在问题中提供的类似的解决方法

    tm tmb = { 5, 6, 7, 8, 9, 10 };
    
    mktime(&tmb);
    
    for(const auto i : { "%%", "%n", "%t", "%Y", "%EY", "%y", "%Oy", "%Ey", "%C", "%EC", "%G", "%g", "%b", "%h", "%B", "%m", "%Om", "%U", "%OU", "%W", "%OW", "%V", "%OV", "%j", "%d", "%Od", "%e", "%Oe", "%a", "%A", "%w", "%Ow", "%u", "%Ou", "%H", "%OH", "%I", "%OI", "%M", "%OM", "%S", "%OS", "%c", "%Ec", "%x", "%Ex", "%X", "%EX", "%D", "%F", "%r", "%R", "%T", "%p", "%z", "%Z" } ) {
        cout << i << "\t|\t\"" << put_time(&tmb, i) << "\"\n";
    }
    
    %%  |   "%"
    %n  |   "
    "
    %t  |   "   "
    %Y  |   "1910"
    %EY |   "1910"
    %y  |   "10"
    %Oy |   "10"
    %Ey |   "10"
    %C  |   "19"
    %EC |   "19"
    %G  |   "1910"
    %g  |   "10"
    %b  |   "Oct"
    %h  |   "Oct"
    %B  |   "October"
    %m  |   "10"
    %Om |   "10"
    %U  |   "40"
    %OU |   "40"
    %W  |   "40"
    %OW |   "40"
    %V  |   "40"
    %OV |   "40"
    %j  |   "281"
    %d  |   "08"
    %Od |   "08"
    %e  |   " 8"
    %Oe |   " 8"
    %a  |   "Sat"
    %A  |   "Saturday"
    %w  |   "6"
    %Ow |   "6"
    %u  |   "6"
    %Ou |   "6"
    %H  |   "07"
    %OH |   "07"
    %I  |   "07"
    %OI |   "07"
    %M  |   "06"
    %OM |   "06"
    %S  |   "05"
    %OS |   "05"
    %c  |   "Sat Oct  8 07:06:05 1910"
    %Ec |   "Sat Oct  8 07:06:05 1910"
    %x  |   "10/08/10"
    %Ex |   "10/08/10"
    %X  |   "07:06:05"
    %EX |   "07:06:05"
    %D  |   "10/08/10"
    %F  |   "1910-10-08"
    %r  |   "07:06:05 AM"
    %R  |   "07:06"
    %T  |   "07:06:05"
    %p  |   "AM"
    %z  |   "+0000"
    %Z  |   "UTC"