add webgui to strftime conversion sub
This commit is contained in:
parent
a751c3a48d
commit
731ae3801a
2 changed files with 73 additions and 45 deletions
|
|
@ -486,6 +486,63 @@ sub session {
|
|||
|
||||
|
||||
|
||||
=head2 webguiToStrftime ( format )
|
||||
|
||||
Change a WebGUI format into a Strftime format.
|
||||
|
||||
NOTE: %M in WebGUI's format has no equivalent in strftime format, so it will
|
||||
be replaced with "_varmonth_". Do something with it.
|
||||
|
||||
=cut
|
||||
|
||||
sub webguiToStrftime {
|
||||
my ( $self, $format ) = @_;
|
||||
$format ||= "%z %Z";
|
||||
my $session = $self->session;
|
||||
my $temp;
|
||||
|
||||
#--- date format preference
|
||||
$temp = $session->user->profileField('dateFormat') || '%y-%M-%D';
|
||||
$format =~ s/\%z/$temp/g;
|
||||
|
||||
#--- time format preference
|
||||
$temp = $session->user->profileField('timeFormat') || '%H:%n %p';
|
||||
$format =~ s/\%Z/$temp/g;
|
||||
|
||||
#--- convert WebGUI date formats to DateTime formats
|
||||
my %conversion = (
|
||||
"c" => "B",
|
||||
"C" => "b",
|
||||
"d" => "d",
|
||||
"D" => "e",
|
||||
"h" => "I",
|
||||
"H" => "l",
|
||||
"j" => "H",
|
||||
"J" => "k",
|
||||
"m" => "m",
|
||||
"M" => "_varmonth_",
|
||||
"n" => "M",
|
||||
"t" => "Z",
|
||||
"O" => "z",
|
||||
"p" => "P",
|
||||
"P" => "p",
|
||||
"s" => "S",
|
||||
"V" => "V",
|
||||
"w" => "A",
|
||||
"W" => "a",
|
||||
"y" => "Y",
|
||||
"Y" => "y"
|
||||
);
|
||||
|
||||
$format =~ s/\%(\w)/\~$1/g;
|
||||
foreach my $key (keys %conversion) {
|
||||
my $replacement = $conversion{$key};
|
||||
$format =~ s/\~$key/\%$replacement/g;
|
||||
}
|
||||
|
||||
return $format;
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
|
||||
=head2 webguiDate ( format )
|
||||
|
|
@ -527,53 +584,14 @@ sub webguiDate {
|
|||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
return undef unless ($session);
|
||||
my $format = shift || "%z %Z";
|
||||
my $temp;
|
||||
|
||||
#---date format preference
|
||||
$temp = $session->user->profileField('dateFormat') || '%y-%M-%D';
|
||||
$format =~ s/\%z/$temp/g;
|
||||
|
||||
#---time format preference
|
||||
$temp = $session->user->profileField('timeFormat') || '%H:%n %p';
|
||||
$format =~ s/\%Z/$temp/g;
|
||||
|
||||
#--- convert WebGUI date formats to DateTime formats
|
||||
my %conversion = (
|
||||
"c" => "B",
|
||||
"C" => "b",
|
||||
"d" => "d",
|
||||
"D" => "e",
|
||||
"h" => "I",
|
||||
"H" => "l",
|
||||
"j" => "H",
|
||||
"J" => "k",
|
||||
"m" => "m",
|
||||
"M" => "_varmonth_",
|
||||
"n" => "M",
|
||||
"t" => "Z",
|
||||
"O" => "z",
|
||||
"p" => "P",
|
||||
"P" => "p",
|
||||
"s" => "S",
|
||||
"V" => "V",
|
||||
"w" => "A",
|
||||
"W" => "a",
|
||||
"y" => "Y",
|
||||
"Y" => "y"
|
||||
);
|
||||
|
||||
$format =~ s/\%(\w)/\~$1/g;
|
||||
foreach my $key (keys %conversion) {
|
||||
my $replacement = $conversion{$key};
|
||||
$format =~ s/\~$key/\%$replacement/g;
|
||||
}
|
||||
|
||||
|
||||
my $format = $self->webguiToStrftime( shift || "%z %Z" );
|
||||
|
||||
#--- %M
|
||||
my $datestr = $self->strftime($format);
|
||||
$temp = int($self->month);
|
||||
my $temp = int($self->month);
|
||||
$datestr =~ s/\%_varmonth_/$temp/g;
|
||||
|
||||
|
||||
#--- return
|
||||
return $datestr;
|
||||
}
|
||||
|
|
|
|||
12
t/DateTime.t
12
t/DateTime.t
|
|
@ -26,7 +26,7 @@ my $session = WebGUI::Test->session;
|
|||
|
||||
# put your tests here
|
||||
|
||||
plan tests => 28;
|
||||
plan tests => 30;
|
||||
|
||||
my $timeZoneUser = addUser($session);
|
||||
|
||||
|
|
@ -91,6 +91,16 @@ ok($@, 'new croaks on an out of range time');
|
|||
my $badday = eval { WebGUI::DateTime->new($session, '2001-08-16 99:199:99'); };
|
||||
ok($@, 'new croaks on an illegal time');
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Test webguiToStrftime conversion
|
||||
is( $nowDt->webguiToStrftime('%y-%m-%d'), '%Y-%m-%d', 'webgui to strftime conversion' );
|
||||
|
||||
$timeZoneUser->update({ 'dateFormat' => '%y-%M-%D' });
|
||||
$timeZoneUser->update({ 'timeFormat' => '%H:%n %p' });
|
||||
is( $nowDt->webguiToStrftime, '%Y-%_varmonth_-%e %l:%M %P', 'default datetime string' );
|
||||
|
||||
|
||||
sub addUser {
|
||||
my $session = shift;
|
||||
my $user = WebGUI::User->new($session, "new");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue