@@ -353,37 +353,66 @@ TEST(chrono_test, system_clock_time_point) {
353353TEST (chrono_test, local_time) {
354354 auto time =
355355 fmt::local_time<std::chrono::seconds>(std::chrono::seconds (290088000 ));
356- EXPECT_EQ ( fmt::format ( " {:%Y-%m-%d %H:%M:%S} " , time), " 1979-03-12 12:00:00 " );
356+
357357 EXPECT_EQ (fmt::format (" {}" , time), " 1979-03-12 12:00:00" );
358358 EXPECT_EQ (fmt::format (" {:}" , time), " 1979-03-12 12:00:00" );
359359
360- std::vector<std::string> specs = {
361- " %%" , " %n" , " %t" , " %Y" , " %EY" , " %y" , " %Oy" , " %Ey" , " %C" ,
362- " %EC" , " %G" , " %g" , " %b" , " %h" , " %B" , " %m" , " %Om" , " %U" ,
363- " %OU" , " %W" , " %OW" , " %V" , " %OV" , " %j" , " %d" , " %Od" , " %e" ,
364- " %Oe" , " %a" , " %A" , " %w" , " %Ow" , " %u" , " %Ou" , " %H" , " %OH" ,
365- " %I" , " %OI" , " %M" , " %OM" , " %S" , " %OS" , " %x" , " %Ex" , " %X" ,
366- " %EX" , " %D" , " %F" , " %R" , " %T" , " %p" };
367- #ifndef _WIN32
368- // Disabled on Windows because these formats are not consistent among
369- // platforms.
370- specs.insert (specs.end (), {" %c" , " %Ec" , " %r" });
371- #elif !FMT_HAS_C99_STRFTIME
372- // Only C89 conversion specifiers when using MSVCRT instead of UCRT
373- specs = {" %%" , " %Y" , " %y" , " %b" , " %B" , " %m" , " %U" , " %W" , " %j" , " %d" , " %a" ,
374- " %A" , " %w" , " %H" , " %I" , " %M" , " %S" , " %x" , " %X" , " %p" };
375- #endif
376- specs.push_back (" %Y-%m-%d %H:%M:%S" );
377-
378- for (const auto & spec : specs) {
379- auto tm = fmt::gmtime (time.time_since_epoch ().count ());
380- auto sys_output = system_strftime (spec, &tm);
360+ EXPECT_EQ (fmt::format (" {:%%}" , time), " %" );
361+ EXPECT_EQ (fmt::format (" {:%n}" , time), " \n " );
362+ EXPECT_EQ (fmt::format (" {:%t}" , time), " \t " );
363+ EXPECT_EQ (fmt::format (" {:%Y}" , time), " 1979" );
364+ EXPECT_EQ (fmt::format (" {:%EY}" , time), " 1979" );
365+ EXPECT_EQ (fmt::format (" {:%y}" , time), " 79" );
366+ EXPECT_EQ (fmt::format (" {:%Oy}" , time), " 79" );
367+ EXPECT_EQ (fmt::format (" {:%Ey}" , time), " 79" );
368+ EXPECT_EQ (fmt::format (" {:%C}" , time), " 19" );
369+ EXPECT_EQ (fmt::format (" {:%EC}" , time), " 19" );
370+ EXPECT_EQ (fmt::format (" {:%G}" , time), " 1979" );
371+ EXPECT_EQ (fmt::format (" {:%g}" , time), " 79" );
372+ EXPECT_EQ (fmt::format (" {:%b}" , time), " Mar" );
373+ EXPECT_EQ (fmt::format (" {:%h}" , time), " Mar" );
374+ EXPECT_EQ (fmt::format (" {:%B}" , time), " March" );
375+ EXPECT_EQ (fmt::format (" {:%m}" , time), " 03" );
376+ EXPECT_EQ (fmt::format (" {:%Om}" , time), " 03" );
377+ EXPECT_EQ (fmt::format (" {:%U}" , time), " 10" );
378+ EXPECT_EQ (fmt::format (" {:%OU}" , time), " 10" );
379+ EXPECT_EQ (fmt::format (" {:%W}" , time), " 11" );
380+ EXPECT_EQ (fmt::format (" {:%OW}" , time), " 11" );
381+ EXPECT_EQ (fmt::format (" {:%V}" , time), " 11" );
382+ EXPECT_EQ (fmt::format (" {:%OV}" , time), " 11" );
383+ EXPECT_EQ (fmt::format (" {:%j}" , time), " 071" );
384+ EXPECT_EQ (fmt::format (" {:%d}" , time), " 12" );
385+ EXPECT_EQ (fmt::format (" {:%Od}" , time), " 12" );
386+ EXPECT_EQ (fmt::format (" {:%e}" , time), " 12" );
387+ EXPECT_EQ (fmt::format (" {:%Oe}" , time), " 12" );
388+ EXPECT_EQ (fmt::format (" {:%a}" , time), " Mon" );
389+ EXPECT_EQ (fmt::format (" {:%A}" , time), " Monday" );
390+ EXPECT_EQ (fmt::format (" {:%w}" , time), " 1" );
391+ EXPECT_EQ (fmt::format (" {:%Ow}" , time), " 1" );
392+ EXPECT_EQ (fmt::format (" {:%u}" , time), " 1" );
393+ EXPECT_EQ (fmt::format (" {:%Ou}" , time), " 1" );
394+ EXPECT_EQ (fmt::format (" {:%H}" , time), " 12" );
395+ EXPECT_EQ (fmt::format (" {:%OH}" , time), " 12" );
396+ EXPECT_EQ (fmt::format (" {:%I}" , time), " 12" );
397+ EXPECT_EQ (fmt::format (" {:%OI}" , time), " 12" );
398+ EXPECT_EQ (fmt::format (" {:%M}" , time), " 00" );
399+ EXPECT_EQ (fmt::format (" {:%OM}" , time), " 00" );
400+ EXPECT_EQ (fmt::format (" {:%S}" , time), " 00" );
401+ EXPECT_EQ (fmt::format (" {:%OS}" , time), " 00" );
402+ EXPECT_EQ (fmt::format (" {:%x}" , time), " 03/12/79" );
403+ EXPECT_EQ (fmt::format (" {:%Ex}" , time), " 03/12/79" );
404+ EXPECT_EQ (fmt::format (" {:%X}" , time), " 12:00:00" );
405+ EXPECT_EQ (fmt::format (" {:%EX}" , time), " 12:00:00" );
406+ EXPECT_EQ (fmt::format (" {:%D}" , time), " 03/12/79" );
407+ EXPECT_EQ (fmt::format (" {:%F}" , time), " 1979-03-12" );
408+ EXPECT_EQ (fmt::format (" {:%R}" , time), " 12:00" );
409+ EXPECT_EQ (fmt::format (" {:%T}" , time), " 12:00:00" );
410+ EXPECT_EQ (fmt::format (" {:%p}" , time), " PM" );
411+ EXPECT_EQ (fmt::format (" {:%c}" , time), " Mon Mar 12 12:00:00 1979" );
412+ EXPECT_EQ (fmt::format (" {:%Ec}" , time), " Mon Mar 12 12:00:00 1979" );
413+ EXPECT_EQ (fmt::format (" {:%r}" , time), " 12:00:00 PM" );
381414
382- auto fmt_spec = fmt::format (" {{:{}}}" , spec);
383- EXPECT_EQ (sys_output, fmt::format (fmt::runtime (fmt_spec), time))
384- << fmt_spec;
385- EXPECT_EQ (sys_output, fmt::format (fmt::runtime (fmt_spec), tm));
386- }
415+ EXPECT_EQ (fmt::format (" {:%Y-%m-%d %H:%M:%S}" , time), " 1979-03-12 12:00:00" );
387416
388417 EXPECT_THROW_MSG ((void )fmt::format (fmt::runtime (" {:%z}" ), time),
389418 fmt::format_error, " no timezone" );
0 commit comments