]> wagnertech.de Git - mfinanz.git/commitdiff
Locale: Methode format_date_object zum Formatieren von DateTime-Instanzen; Doku
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 28 Aug 2012 10:23:08 +0000 (12:23 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 28 Aug 2012 10:23:08 +0000 (12:23 +0200)
Unterstützt auch Ausgabe von Stunden, Minuten, Sekunden mittels eines
Parameters 'precision'.

SL/Helper/DateTime.pm
SL/Locale.pm

index 58fe6f8796289626829455e5f2734d960d3cc274..59a100c2ac6769536d2cc1e1e5c4ec14cb1455a7 100644 (file)
@@ -11,7 +11,9 @@ sub today_local {
 }
 
 sub to_lxoffice {
 }
 
 sub to_lxoffice {
-  return $::locale->format_date(\%::myconfig, $_[0]);
+  my $self   = shift;
+  my %params = (scalar(@_) == 1) && (ref($_[0]) eq 'HASH') ? %{ $_[0] } : @_;
+  return $::locale->format_date_object($self, %params);
 }
 
 sub from_lxoffice {
 }
 
 sub from_lxoffice {
@@ -40,16 +42,19 @@ Returns the current time with the time zone set to the local time zone.
 
 Returns the current date with the time zone set to the local time zone.
 
 
 Returns the current date with the time zone set to the local time zone.
 
-=item C<to_lxoffice>
+=item C<to_lxoffice %param>
 
 
-Formats the date according to the current Lx-Office user's date
-format.
+Formats the date and time according to the current Lx-Office user's
+date format with L<Locale::format_datetime_object>.
 
 
-=item C<from_lxoffice>
+=item C<from_lxoffice $string>
 
 Parses a date string formatted in the current Lx-Office user's date
 format and returns an instance of L<DateTime>.
 
 
 Parses a date string formatted in the current Lx-Office user's date
 format and returns an instance of L<DateTime>.
 
+Note that only dates can be parsed at the moment, not the time
+component (as opposed to L<to_lxoffice>).
+
 =back
 
 =head1 AUTHOR
 =back
 
 =head1 AUTHOR
index 24131378fb4d01739f3c92e4536f950abcd5d387..7c524e984d153bcbf7f9658062b631ff1378fb2a 100644 (file)
@@ -396,6 +396,28 @@ sub parse_date_to_object {
   return $yy && $mm && $dd ? DateTime->new(year => $yy, month => $mm, day => $dd) : undef;
 }
 
   return $yy && $mm && $dd ? DateTime->new(year => $yy, month => $mm, day => $dd) : undef;
 }
 
+sub format_date_object {
+  my ($self, $datetime, %params)    = @_;
+
+  my $format             =  $::myconfig{dateformat} || 'yyyy-mm-dd';
+  $format                =~ s/yyyy/\%Y/;
+  $format                =~ s/yy/\%y/;
+  $format                =~ s/mm/\%m/;
+  $format                =~ s/dd/\%d/;
+
+  my $precision          =  $params{precision} || 'day';
+  $precision             =~ s/s$//;
+  my %precision_spec_map = (
+    second => '%H:%M:%S',
+    minute => '%H:%M',
+    hour   => '%H',
+  );
+
+  $format .= ' ' . $precision_spec_map{$precision} if $precision_spec_map{$precision};
+
+  return $datetime->strftime($format);
+}
+
 sub reformat_date {
   $main::lxdebug->enter_sub(2);
 
 sub reformat_date {
   $main::lxdebug->enter_sub(2);
 
@@ -516,3 +538,140 @@ sub get_local_time_zone {
 }
 
 1;
 }
 
 1;
+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+Locale - Functions for dealing with locale-dependant information
+
+=head1 SYNOPSIS
+
+  use Locale;
+  use DateTime;
+
+  my $locale = Locale->new('de');
+  my $now    = DateTime->now_local;
+  print "Current date and time: ", $::locale->format_date_object($now, precision => 'second'), "\n";
+
+=head1 OVERVIEW
+
+TODO: write overview
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<date>
+
+TODO: Describe date
+
+=item C<findsub>
+
+TODO: Describe findsub
+
+=item C<format_date>
+
+TODO: Describe format_date
+
+=item C<format_date_object $datetime, %params>
+
+Formats the C<$datetime> object accoring to the user's locale setting.
+
+The parameter C<precision> can control whether or not the time
+component is formatted as well:
+
+=over 4
+
+=item * C<day>
+
+Only format the year, month and day. This is also the default.
+
+=item * C<hour>
+
+Add the hour to the date.
+
+=item * C<minute>
+
+Add hour:minute to the date.
+
+=item * C<second>
+
+Add hour:minute:second to the date.
+
+=back
+
+=item C<get_local_time_zone>
+
+TODO: Describe get_local_time_zone
+
+=item C<is_utf8>
+
+TODO: Describe is_utf8
+
+=item C<lang_to_locale>
+
+TODO: Describe lang_to_locale
+
+=item C<new>
+
+TODO: Describe new
+
+=item C<parse_date>
+
+TODO: Describe parse_date
+
+=item C<parse_date_to_object>
+
+TODO: Describe parse_date_to_object
+
+=item C<quote_special_chars>
+
+TODO: Describe quote_special_chars
+
+=item C<raw_io_active>
+
+TODO: Describe raw_io_active
+
+=item C<reformat_date>
+
+TODO: Describe reformat_date
+
+=item C<remap_special_chars>
+
+TODO: Describe remap_special_chars
+
+=item C<restore_numberformat>
+
+TODO: Describe restore_numberformat
+
+=item C<set_numberformat_wo_thousands_separator>
+
+TODO: Describe set_numberformat_wo_thousands_separator
+
+=item C<text>
+
+TODO: Describe text
+
+=item C<unquote_special_chars>
+
+TODO: Describe unquote_special_chars
+
+=item C<with_raw_io>
+
+TODO: Describe with_raw_io
+
+=back
+
+=head1 BUGS
+
+Nothing here yet.
+
+=head1 AUTHOR
+
+Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
+
+=cut