I noticed that, despite the man page’s claim, %l (that’s ell) is not implemented in strftime(). This patch should do the job.
diff --git a/src/time/strftime.c b/src/time/strftime.c
index cc53d536..78f12ae0 100644
--- a/src/time/strftime.c
+++ b/src/time/strftime.c
@@ -104,6 +104,12 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *
val = tm->tm_yday+1;
width = 3;
goto number;
+ case 'l':
+ def_pad = '_';
+ val = tm->tm_hour;
+ if (!val) val = 12;
+ else if (val > 12) val -= 12;
+ goto number;
case 'm':
val = tm->tm_mon+1;
goto number;