NAME
POSIX::strftime::Compiler - Compile strftime to perl. for logger and servers
SYNOPSIS
use POSIX::strftime::Compiler;
my $psc = POSIX::strftime::Compiler->new('%a, %d %b %Y %T %z');
say $psc->to_string(localtime):
DESCRIPTION
POSIX::strftime::Compiler compiles strftime's format to perl. And generates formatted string. Because this module compiles strftime to perl code, it has good performance.
POSIX::strftime::Compiler has compatibility with GNU's strftime, but only supports "C" locale. It's useful for loggers and servers.
METHDO
-
new($fmt:String)
create instance of POSIX::strftime::Compiler.
-
to_string(@time)
generate formatted string.
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); $psc->to_string($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst):
SUPPORTED FORMAT
-
%aThe abbreviated weekday name according to the current locale.
-
%AThe full weekday name according to the current locale.
-
%bThe abbreviated month name according to the current locale.
-
%BThe full month name according to the current locale.
-
%cThe preferred date and time representation for the current locale.
-
%CThe century number (year/100) as a 2-digit integer. (SU)
-
%dThe day of the month as a decimal number (range 01 to 31).
-
%DEquivalent to
%m/%d/%y. (for Americans only: Americans should note that in other countries%d/%m/%yis rather common. This means that in international context this format is ambiguous and should not be used.) (SU) -
%eLike
%d, the day of the month as a decimal number, but a leading zero is replaced by a space. (SU) -
%EModifier: use alternative format, see below. (SU)
-
%FEquivalent to
%Y-%m-%d(the ISO 8601 date format). (C99) -
%GThe ISO 8601 week-based year with century as a decimal number. The 4-digit year corresponding to the ISO week number (see
%V). This has the same format and value as %Y, except that if the ISO week number belongs to the previous or next year, that year is used instead. (TZ) -
%gLike
%G, but without century, that is, with a 2-digit year (00-99). (TZ) -
%hEquivalent to
%b. (SU) -
%HThe hour as a decimal number using a 24-hour clock (range 00 to 23).
-
%IThe hour as a decimal number using a 12-hour clock (range 01 to 12).
-
%jThe day of the year as a decimal number (range 001 to 366).
-
%kThe hour (24-hour clock) as a decimal number (range 0 to 23); single digits are preceded by a blank. (See also
%H.) (TZ) -
%lThe hour (12-hour clock) as a decimal number (range 1 to 12); single digits are preceded by a blank. (See also
%I.) (TZ) -
%mThe month as a decimal number (range 01 to 12).
-
%MThe minute as a decimal number (range 00 to 59).
-
%nA newline character. (SU)
-
%NNanoseconds (range 000000000 to 999999999). It is a non-POSIX extension and outputs a nanoseconds if there is floating seconds argument.
-
%OModifier: use alternative format, see below. (SU)
-
%pEither "AM" or "PM" according to the given time value, or the corresponding strings for the current locale. Noon is treated as "PM" and midnight as "AM".
-
%PLike
%pbut in lowercase: "am" or "pm" or a corresponding string for the current locale. (GNU) -
%rThe time in a.m. or p.m. notation. In the POSIX locale this is equivalent to
%I:%M:%S %p. (SU) -
%RThe time in 24-hour notation (%H:%M). (SU) For a version including the seconds, see
%Tbelow. -
%sThe number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). (TZ)
-
%SThe second as a decimal number (range 00 to 60). (The range is up to 60 to allow for occasional leap seconds.)
-
%tA tab character. (SU)
-
%TThe time in 24-hour notation (
%H:%M:%S). (SU) -
%uThe day of the week as a decimal, range 1 to 7, Monday being 1. See also
%w. (SU) -
%UThe week number of the current year as a decimal number, range 00 to 53, starting with the first Sunday as the first day of week 01. See also
%Vand%W. -
%VThe ISO 8601 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the new year. See also
%Uand%W. (SU) -
%wThe day of the week as a decimal, range 0 to 6, Sunday being 0. See also
%u. -
%WThe week number of the current year as a decimal number, range 00 to 53, starting with the first Monday as the first day of week 01.
-
%xThe preferred date representation for the current locale without the time.
-
%XThe preferred time representation for the current locale without the date.
-
%yThe year as a decimal number without a century (range 00 to 99).
-
%YThe year as a decimal number including the century.
-
%zThe
+hhmmor-hhmmnumeric timezone (that is, the hour and minute offset from UTC). (SU) -
%ZThe timezone or name or abbreviation.
-
%%A literal
%character.
%E[cCxXyY] and %O[deHImMSuUVwWy] are not supported, just remove E and O prefix.
SEE ALSO
-
POSIX::strftime::Compiler is built on POSIX::strftime::GNU::PP code
LICENSE
Copyright (C) Masahiro Nagano.
Format specification is based on strftime(3) manual page which is a part of the Linux man-pages project.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Masahiro Nagano kazeburo@gmail.com