Ищем код Perl 5.12, который генерирует вчерашнюю дату в формате DDMMYY - PullRequest
4 голосов
/ 31 октября 2011

Я хотел бы получить простой способ получить вчерашнюю дату (местное время) в виде строки в скрипте Perl. Желательно, чтобы я делал это без каких-либо зависимостей от модулей, поскольку у нас есть чистая установка Perl 5.12.

Итак, что-то вроде:

my $yesterdays_date=...; # Puts for example '301011' into $yesterdays_date, 
                         # if today is October 31st, 2011

Ответы [ 4 ]

13 голосов
/ 31 октября 2011

Если вы готовы использовать зависимости, DateTime, как правило, будет делать все, что вам нужно.

use strict;
use warnings;
use 5.012;

use DateTime;

say DateTime->now->subtract(days => 1)->strftime('%d%m%y');
13 голосов
/ 31 октября 2011

Time::Piece является ядром:

use Time::Piece;
use Time::Seconds qw(ONE_DAY);

my $yesterday = localtime() - ONE_DAY();
print $yesterday->strftime('%d%m%y'), "\n";

Если вас беспокоит переход на летнее время, вы можете нормализовать текущее время к полудню:

use Time::Piece;
use Time::Seconds qw(ONE_DAY ONE_HOUR);

my $today = localtime;
my $yesterday = $today + ONE_HOUR * ( 12 - $today->hour ) - ONE_DAY;
print $yesterday->strftime("%d%m%y"), "\n";

Если вы можете жить с зависимостями, тогда используйте DateTime:

use DateTime;

print DateTime->now->subtract(days => 1)->strftime('%d%m%y'), "\n";
1 голос
/ 31 октября 2011

Вы можете использовать модуль POSIX следующим образом:

perl -MPOSIX=strftime -le 'print strftime "%m%d%y",localtime(time-(60*60*24))'
0 голосов
/ 31 октября 2011

Просто вычтите 24 часа (24 часа * 60 минут * 60 секунд) из текущего времени и получите местное время:

say scalar localtime(time - 60*60*24);
# Sun Oct 30 21:04:30 2011

Обратите внимание, что localtime возвращает время в строковом форматетолько в скалярном контексте.Если вам нужно сгенерировать 'DDMMYY', вы можете просто использовать структуру данных, возвращаемую списком:

my @tm = localtime(time - 60*60*24);
my $date = sprintf("%02d%02d%2d", $tm[3], $tm[4]+1, $tm[5] + 1900);
# 30102011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...