Не будет никаких побочных эффектов, но и улучшений тоже не будет. Код GA должен идти перед CSS и тегами сценариев, поскольку их загрузка может блокировать браузер и задерживать загрузку Google Script и (что более важно) задерживать запуск очереди команд ga. Мета-теги на самом деле не влияют на обработку, поэтому не имеет значения, предшествуют ли они коду, но браузеры не очень разборчивы, так как в заголовке заголовка и в мета-месте отображаются слова
.Time :: ParseDate прекрасно справится с этим форматом:
use Time::ParseDate qw(parsedate);
$d1="04-MAR-09";
$d2="06-MAR-09";
printf "%d days difference\n", (parsedate($d2) - parsedate($d1)) / (60 * 60 * 24);
Date :: Calc имеет Decode_Date_EU (и US и т. Д.)
#!/usr/bin/perl
use Date::Calc qw(Delta_Days Decode_Date_EU);
($year1,$month1,$day1) = Decode_Date_EU('02-MAY-09');
($year2,$month2,$day2) = Decode_Date_EU('04-MAY-09');
print "Diff = " . Delta_Days($year1,$month1,$day1, $year2,$month2,$day2);
Преобразовать две даты в секунды, а затем выполнить математику:
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw/mktime/;
{
my %mon = (
JAN => 0,
FEB => 1,
MAR => 2,
APR => 3,
MAY => 4,
JUN => 5,
JUL => 6,
AUG => 7,
SEP => 8,
OCT => 9,
NOV => 10,
DEC => 11,
);
sub date_to_seconds {
my $date = shift;
my ($day, $month, $year) = split /-/, $date;
$month = $mon{$month};
if ($year < 50) { #or whatever your cutoff is
$year += 100; #make it 20??
}
#return midnight on the day in question in
#seconds since the epoch
return mktime 0, 0, 0, $day, $month, $year;
}
}
my $d1 = "04-MAY-99";
my $d2 = "04-MAY-00";
my $s1 = date_to_seconds $d1;
my $s2 = date_to_seconds $d2;
my $days = int(($s2 - $s1)/(24*60*60));
print "there are $days days between $d1 and $d2\n";
Вы можете преобразовать даты в длинный целочисленный формат, который представляет собой количество секунд с начала эпохи (я думаю, что какая-то дата в 1970 году). Затем у вас есть две переменные, которые являются датами в секундах; вычесть меньшее из большего. Теперь у вас есть промежуток времени в секундах; разделите его на количество секунд в 24 часах.
Если вы заботитесь о точности, имейте в виду, что не во всех днях есть 86400 секунд. Любое решение, основанное на этом предположении, не будет правильным в некоторых случаях.
Вот фрагмент, который я использую для вычисления и отображения различий даты и времени несколькими различными способами с использованием библиотеки DateTime . Думаю, последний напечатанный ответ - это тот, который вам нужен.
#!/usr/bin/perl -w
use strict;
use DateTime;
use DateTime::Format::Duration;
# XXX: Create your two dates here
my $d1 = DateTime->new(...);
my $d2 = DateTime->new(...);
my $dur = ($d1 > $d2 ? ($d1->subtract_datetime_absolute($d2)) :
($d2->subtract_datetime_absolute($d1)));
my $f = DateTime::Format::Duration->new(pattern =>
'%Y years, %m months, %e days, %H hours, %M minutes, %S seconds');
print $f->format_duration($dur), "\n";
$dur = $d1->delta_md($d2);
my $dy = int($dur->delta_months / 12);
my $dm = $dur->delta_months % 12;
print "$dy years $dm months ", $dur->delta_days, " days\n";
print $dur->delta_months, " months ", $dur->delta_days, " days\n";
print $d1->delta_days($d2)->delta_days, " days\n";