dva*_*ria 38 formatting perl date
我正在研究工作中的Perl程序,并坚持(我认为)一个微不足道的问题.我只需要构建一个格式为'06/13/2012'的字符串(总是10个字符,所以0表示小于10的数字).
这是我到目前为止所拥有的:
use Time::localtime;
$tm=localtime;
my ($day,$month,$year)=($tm->mday,$tm->month,$tm->year);
Run Code Online (Sandbox Code Playgroud)
Pav*_*sov 56
你可以快速完成,只使用一个POSIX功能.如果您有大量具有日期的任务,请参阅模块DateTime.
use POSIX qw(strftime);
my $date = strftime "%m/%d/%Y", localtime;
print $date;
Run Code Online (Sandbox Code Playgroud)
Bor*_*din 54
你可以使用Time::Piece
,它不需要安装,因为它是一个核心模块,并且从版本10开始随Perl 5一起分发.
use Time::Piece;
my $date = localtime->strftime('%m/%d/%Y');
print $date;
Run Code Online (Sandbox Code Playgroud)
产量
06/13/2012
Run Code Online (Sandbox Code Playgroud)
您可能更喜欢使用该dmy
方法,该方法采用单个参数,即在结果字段之间使用的分隔符,并避免必须指定完整的日期/时间格式
my $date = localtime->dmy('/');
Run Code Online (Sandbox Code Playgroud)
这产生了与我原始解决方案相同的结果
dax*_*xim 12
use DateTime qw();
DateTime->now->strftime('%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)
表达式返回 06/13/2012
如果你喜欢用艰难的方式做事:
my (undef,undef,undef,$mday,$mon,$year) = localtime;
$year = $year+1900;
$mon += 1;
if (length($mon) == 1) {$mon = "0$mon";}
if (length($mday) == 1) {$mday = "0$mday";}
my $today = "$mon/$mday/$year";
Run Code Online (Sandbox Code Playgroud)