Подтвердить что ты не робот

Сегодня Дата на Perl в формате MM/DD/YYYY

Я работаю над программой Perl на работе и зацикливаюсь (как я думаю) на тривиальной проблеме. Мне просто нужно построить строку в формате '06/13/2012 '(всегда 10 символов, поэтому 0 для чисел меньше 10).

Вот что я до сих пор:

use Time::localtime;
$tm=localtime;
my ($day,$month,$year)=($tm->mday,$tm->month,$tm->year);
4b9b3361

Ответ 1

Вы можете сделать это быстро, используя только функцию POSIX. Если у вас есть множество задач с датами, см. Модуль DateTime.

use POSIX qw(strftime);

my $date = strftime "%m/%d/%Y", localtime;
print $date;

Ответ 2

Вы можете использовать Time::Piece, который не требует установки, поскольку он является основным модулем и был распространен с Perl 5, поскольку версия 10.

use Time::Piece;

my $date = localtime->strftime('%m/%d/%Y');
print $date;

Выход

06/13/2012


Update

Вы можете использовать метод dmy, который принимает один параметр, который является разделителем, который будет использоваться между полями результата, и избегает необходимости указывать полный формат даты/времени

my $date = localtime->dmy('/');

Это приводит к тому же результату, что и к исходному решению

Ответ 3

use DateTime qw();
DateTime->now->strftime('%m/%d/%Y')   

выражение возвращает 06/13/2012

Ответ 4

Если вам нравится делать что-то трудное:

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";

Ответ 5

use Time::Piece;
...
my $t = localtime;
print $t->mdy("/");# 02/29/2000

Ответ 6

Формирование чисел с начальным нулем легко выполняется с помощью "sprintf", встроенной функции в perl (документация с: perldoc perlfunc)

use strict;
use warnings;
use Date::Calc qw();
my ($y, $m, $d) = Date::Calc::Today();
my $ddmmyyyy = sprintf '%02d.%02d.%d', $d, $m, $y;
print $ddmmyyyy . "\n";

Это дает вам:

14.05.2014

Ответ 7

Perl-код для Unix-систем:

# Capture date from shell
my $current_date = `date +"%m/%d/%Y"`;

# Remove newline character
$current_date = substr($current_date,0,-1);

print $current_date, "\n";