in reply to Re: Localized weekday names
in thread Localized weekday names

Well, I wanted the list to a) start with Sunday, and b) have the "short" day name.

So I modified your code to something like this:

perl -MDateTime -le '@wd=map {DateTime->new(locale=> "de", year=>1970, +month=>1,day=>4+$_)->strftime("%a")} (0..6);print join",",@wd'
Which does work, but for Germany this interestingly produces
So.,Mo.,Di.,Mi.,Do.,Fr.,Sa.
instead of the desired
So,Mo,Di,Mi,Do,Fr,Sa
It doesn't look like DateTime can handle %a returning only 2 chars. -- No Idea why :-)

Replies are listed 'Best First'.
Re^3: Localized weekday names
by 1nickt (Canon) on Nov 04, 2017 at 00:08 UTC

    Hi,

    It doesn't look like DateTime can handle %a returning only 2 chars. -- No Idea why :-)

    That's not it at all. Please see the documentation for DateTime::Locale. You can look up the data used by DateTime::Locale for each locale code, for example, for the one you used, de, at https://metacpan.org/pod/distribution/DateTime-Locale/lib/DateTime/Locale/de.pod, which contains:

    Abbreviated (format) Mo. Di. Mi. Do. Fr. Sa. So. ... Abbreviated (stand-alone) Mo Di Mi Do Fr Sa So
    So you should use DateTime::format_cldr() with format ccc to print "Abbreviated (stand-alone)", as shown in the docs:
    $ perl -Mstrict -MDateTime -wlE 'say join", ", map { DateTime->new( lo +cale => "de", year => 1970, month => 1, day => 4 + $_ )->format_cldr( +"ccc") } 0 .. 6' So, Mo, Di, Mi, Do, Fr, Sa


    The way forward always starts with a minimal test.