Python 3
Ther являются двумя способами достигнуть этого:
1) С количеством встроенной функции ()
sentence = 'Mary had a little lamb'
print(sentence.count('a'))`
2) не используя функцию
sentence = 'Mary had a little lamb'
count = 0
for i in sentence:
if i == "a":
count = count + 1
print(count)
Date :: Calc
- это модуль чемпиона:
use strict;
use warnings;
use Date::Calc qw(Add_Delta_YMD);
my $startDate = '2000-01-01';
my ($startYear, $startMonth, $startDay) = $startDate =~ m/(\d{4}-(\d{2})-\d{2})/;
# 1 year, 2 months, 3 days, after startDate
my $endDate = join('-', Add_Delta_YMD($startYear, $startMonth, $startDay, 1, 2, 3));
Модуль имеет огромное количество подпрограмм преобразования времени, особенно тех, которые имеют дело с дельтами. Также заслуживают внимания DateTime
и Date :: Manip
.
Date :: Calc может использоваться для таких вычислений:
#!/usr/bin/perl
use strict;
use warnings;
use Date::Calc qw(Add_Delta_Days);
my ( $yyyy, $mm, $dd ) = ( 2009, 9, 2 );
my @date = Add_Delta_Days( $yyyy, $mm, $dd, -3 );
print join( '-', @date );
См. perldoc POSIX
для функции mktime ()
.
Это поможет вам преобразовать дату и время в простое число, которое является время Unix (полагаю, количество секунд с 1 января 1970 г.). Затем вычтите из этого числа 3 (дня), умноженное на 24 (часы в день), умноженное на 60 (минуты в час), умноженное на 60 (секунды в минуту) или 259200 секунд, и используйте localtime ()
, чтобы преобразовать это количество секунд обратно в строковое представление.
Это, вероятно, лучшее решение *, потому что оно будет обрабатывать изменения месяца и года автоматически. Любое другое решение, вероятно, окажется более сложным после учета проверки того, закончились ли у нас дни в месяце или месяцы в году.
РЕДАКТИРОВАТЬ: * Вне рассмотрения ] CPAN
.
Вариантов так много, что это в меру смущает. Отчасти это зависит от того, какие еще расчеты могут вам понадобиться в будущем, и будут ли время и часовые пояса когда-либо иметь значение, и тому подобное.
Вы можете посмотреть на любой из этих
Date :: Calc
] Date :: Manip
DateTime :: *
- см. Также datetime.perl.org (, хотя этот сайт, похоже, не отвечал 2009-09-01T22: 30 -07: 00 ) , чтобы назвать только три (набора) модулей. Я бы посоветовал Date :: Calc
или Date :: Manip
для простоты, но если в будущем вам нужно будет что-то необычное, то DateTime
модули могут быть лучше.
В mktime
замечательно то, что он будет обрабатывать любое время смещения. Используется январь = 0; и 2009 год = 109 на этой схеме. Таким образом, напечатанный месяц - 1 и полный год - 1900.
use POSIX qw<mktime>;
my ( $year, $month, $day ) = split '-', $date;
my $three_day_prior = mktime( 0, 0, 0, $day - 3, $month - 1, $year - 1900 );
mktime
также полезен для определения последнего дня месяца. Вы просто переходите к дню 0 следующего месяца.
mktime( 0, 0, 0, 0, $month, $year - 1900 );
DateTime - канонический способ работы с датами в современном Perl:
use DateTime;
my ($year, $month, $day) = split '-', '2009-09-01';
my $date = DateTime->new( year => $year, month => $month, day => $day );
$date->subtract( days => 3 );
# $date is now three days earlier (2009-08-29T00:00:00)