Line # Revision Author
1 8 ahitrov@rambler.ru % if( $showdate ) {
2 <% $sdate %>\
3 % }
4 % if( $showdate && $showtime ) {
5 , \
6 % }
7 % if( $showtime ) {
8 <% $stime %>\
9 % }
10 <%args>
11
12 $datetime => undef
13
14 $showyear => 1
15 $showdate => 1
16 $showtime => 0
17
18 $digital => 0
19
20 </%args>
21 <%doc>
22
23 Принимает дату в формате yyyy-mm-dd[ mm:ss], или в виде числа секунд с начала компьютерной эры.
24
25 Показывает ее в виде
26
27 dd название_месяца yyyy [hh:mm[:ss]]
28
29 или в виде
30
31 dd.mm.yyyy [hh:mm[:ss]]
32
33 если задан параметр digital = 1
34
35 Также в возвращаемой строке может отсутствовать год,
36 если параметр $showyear = undef.
37
38 Если параметр $showdate = undef, то значение параметра $showyear не имеет значение
39
40 </%doc>
41 <%init>
42
43 my ($y, $mon, $d, $hr, $mn);
44
45 if ($datetime)
46 {
47 $datetime =~ /(\d{4})-0?(\d{1,2})-0?(\d{1,2})\s*(\d{0,2}):*(\d{0,2})/;
48 ($y, $mon, $d, $hr, $mn) = ($1, $2, $3, $4, $5);
49 }
50 else
51 {
52 ($mn, $hr, $d, $mon, $y) = (localtime())[1 .. 5];
53 $mon++; $y += 1900;
54 }
55
56 my $stime = sprintf( "%2.2d:%2.2d", $hr, $mn );
57 my $smon = (qw(января февраля марта апреля мая июня июля августа сентября октября ноября декабря))[$mon-1];
58
59 my $sdate = ($digital ? sprintf( "%2.2d.%2.2d", $d, $mon ) : sprintf( "%2.2d %s", $d, $smon ) );
60 if( $showyear )
61 {
62 $sdate .= ($digital ? '.' : ' ').$y;
63 }
64
65 </%init>