Forum Webscript.Ru

Программирование => Perl => Тема начата: Yaroslav от 12 Июля 2006, 17:10:54

Название: мучения с нулем
Отправлено: Yaroslav от 12 Июля 2006, 17:10:54
если надо постаить ноль перед датой, то это решается так:

(undef,undef,undef,$mday,$mon,$year,undef) = localtime(time);
if ($mday < 10) { $mday="0$mday"; }
if ($mon < 10) { $mon="0$mon"; }
$data="$mday.$mon.$year";

но вот у меня чуть подругому, юзер сам должен стаить дату, а я ноль никак не могу всавить перед ним:

$stdey=$VOTE{stdey}; if ($stday < 10) { $stday="0$stday"; }
print "$stdey
"; #вот не хочет он 01 выдавать....




Название: мучения с нулем
Отправлено: arto от 12 Июля 2006, 17:18:25
perldoc -f printf
Название: мучения с нулем
Отправлено: arto от 12 Июля 2006, 17:21:33
да и $stdey != $stday
Название: мучения с нулем
Отправлено: Yaroslav от 12 Июля 2006, 17:31:03
sprintf - читаю
$stdey != $stday - это почему?
Название: мучения с нулем
Отправлено: Yaroslav от 12 Июля 2006, 17:34:45
printf, sprintf - прочитал, ничего не понял, пример можно?
Название: мучения с нулем
Отправлено: commander от 12 Июля 2006, 17:49:02
Yaroslav
sprintf("%02d", 1);
Название: мучения с нулем
Отправлено: arto от 12 Июля 2006, 18:53:50
$stdey=$VOTE{stdey}; if ($stday < 10) { $stday="0$stday"; }

присваеваете $stdey, фиговину творите с $stday.
Название: мучения с нулем
Отправлено: KiLLjoY aka SerZH от 23 Июля 2006, 00:27:46
length($mday)<2?"0$mday":$mday;
Название: мучения с нулем
Отправлено: arto от 25 Июля 2006, 12:40:40
# perl -MBenchmark=timethese -e \'$a = 1; timethese ($ARGV[0],{"A" => sub { return sprintf "%02d",$a; },"B" => sub { return length($a) < 2 ? "0$a" : $a; }})\' 100000000
Benchmark: timing 100000000 iterations of A, B...
         A: 26 wallclock secs (38.18 usr +  0.01 sys = 38.19 CPU) @ 2618486.51/s (n=100000000)
         B: 49 wallclock secs (47.31 usr +  0.02 sys = 47.33 CPU) @ 2112824.85/s (n=100000000)
#
Название: мучения с нулем
Отправлено: commander от 25 Июля 2006, 15:31:03
arto
perl -MBenchmark=timethese -e \'$a = 1; timethese ($ARGV[0],{"A" => sub { return sprintf "%02d",$a; },"B" => sub { return $a < 10 ? "0$a" : $a; }})\' 10000000
Benchmark: timing 10000000 iterations of A, B...
         A: 24 wallclock secs (19.95 usr +  0.00 sys = 19.95 CPU) @ 501174.63/s (n=10000000)
         B: 10 wallclock secs (11.45 usr +  0.00 sys = 11.45 CPU) @ 873720.14/s (n=10000000)