Since I wrote this question and studied everything, I found my own answer. I do not want all of this work to disappear, though.
The %F format I used is not portable, and the POSIX module says in its strftime entry:
If you want your code to be portable, your format ("fmt") argument should use only the conversion specifiers defined by the ANSI C standard (C89, to play safe). These are "aAbBcdHIjmMpSUwWxXyYZ%".
%F really %Y-%m-%d , so I have to use this.
My particular problem is that I know that the POSIX module tells you which format specifiers you can use to be portable, but I still have to look at strftime to see what they do. When I look at the manual page, I forget to check which ones are portable.
brian d foy
source share