格式化日期的简单方法

con*_*dor 2 perl datetime

我写了一个perl脚本来获取datetime.它确实有效,但我想知道是否有更简单的方法将日期格式化为输出.

#!/usr/bin/perl
use DateTime;

my $dt          = DateTime->now( time_zone => 'local' );
$myTimeStamp    = $dt->subtract( days => 1 );
$myYear         = $myTimeStamp->year;
$myMonth        = $myTimeStamp->month;
if ( length( $myMonth ) == 1 ) {
    $myMonth = "0$myMonth";
}
$myDay          = $myTimeStamp->day;
if ( length( $myDay ) == 1 ) {
    $myDay = "0$myDay";
}
$myHour         = $myTimeStamp->hour;
if ( length( $myHour ) == 1 ) {
    $myHour = "0$myHour";
}
#$myDir          = "/var/tmp/logs/$myYear/$myMonth/$myYear$myMonth-";

print "--> $myYear $myMonth $myDay $myHour\n";
# --> 2012 02 28 02
exit 0;
Run Code Online (Sandbox Code Playgroud)

cjm*_*cjm 9

DateTimeformat_cldr为此提供了以下方法:

use DateTime;

my $myTimeStamp = DateTime->now->subtract( days => 1 );

printf "--> %s\n", $myTimeStamp->format_cldr('yyyy MM dd HH');
# --> 2012 02 28 02
Run Code Online (Sandbox Code Playgroud)

  • [also](http://p3rl.org/DateTime#strftime-Patterns):`$ myTimeStamp-> strftime('%Y%m%d%H')` (4认同)

Xae*_*ess 7

当然,使用POSIX模块:

POSIX模块允许您访问所有(或几乎所有)标准POSIX 1003.1标识符.

例:

use POSIX;
print POSIX::strftime('%d-%m-%Y %H:%M:%S', localtime());
Run Code Online (Sandbox Code Playgroud)

  • 祈祷POSIX我的兄弟姐妹!我会稍微偏爱`strftime`解决方案作为Perl Core的"部分". (3认同)