📘 Formatted date in Perl 6

📘 Formatted date in Raku

N. B. Perl 6 has been renamed to Raku. Click to read more.


Print the current date in an even better format.

In Perl 6, there is a built-in DateTime class. It is equipped with a few useful methods, so there’s no need to use external modules for many standard tasks. Save the current moment in the $now variable:

my $now = DateTime.now;

The easiest thing is to print the proper time using a dedicated method:

say $now.hh-mm-ss; # 22:37:16

To achieve a more granular control over both the date and time parts, use the formatter attribute of the constructor together with methods like day and month to get separate parts of the date and time (see Task 87, Current date and time): 

my $now = DateTime.now(
    formatter => {
        sprintf '%02d.%02d.%04d, %02d:%02d', 
        .day, .month, .year, .hour, .minute
    }
);

say $now; # 14.10.2017, 22:41

The formatting string '%02d.%02d.%04d, %02d:%02d' uses the standard POSIX printf format. The sprintf function forms a string that is returned when a DateTime object (the $now variable, in our case) is stringified. For instance, it is used when the variable is interpolated in a string:

say "Current date and time: $now.";

Leave a Reply