Search code examples
perldate-format

Create month abbrevation in german - Perl


I want yesterdays date in perl in a specific format.

My Script:

use DateTime qw( );
use Date::Parse;
use Date::Language;
   
my $lang = Date::Language->new('German'); 

    my $yday_date =
       DateTime
          ->now( time_zone => 'local' )
          ->set_time_zone('floating')
          ->truncate( to => 'day' )
          ->subtract( days => 1 )
          ->strftime('%b%d');
          
            print $lang ->time2str($yday_date)

What I get:

Dec08

What I need

Dez08

Does anyone know what the issue is? Any answer is appreciated!


Solution

  • You should pass the time to the language object together with the formatting string.

    Example:

    use DateTime qw( );
    use Date::Parse;
    use Date::Language;
    
    my $lang = Date::Language->new('German');
    
    my $yday_date =
       DateTime
          ->now( time_zone => 'local' )
          ->set_time_zone('floating')
          ->truncate( to => 'day' )
          ->subtract( days => 1 )
          ->epoch;
    
    print $lang->time2str('%b%d', $yday_date) . "\n";