2017-08-14 12:45:54 +01:00
package Pear::LocalLoop::Plugin::Datetime ;
use Mojo::Base 'Mojolicious::Plugin' ;
use DateTime::Format::Strptime ;
sub register {
my ( $ plugin , $ app , $ conf ) = @ _ ;
2017-09-28 16:39:03 +01:00
$ app - > helper ( human_datetime_parser = > sub {
return DateTime::Format::Strptime - > new ( pattern = > '%x %X' ) ;
} ) ;
$ app - > helper ( format_human_datetime = > sub {
my ( $ c , $ datetime_obj ) = @ _ ;
return $ c - > human_datetime_parser - > format_datetime (
$ datetime_obj ,
) ;
} ) ;
2017-08-14 12:45:54 +01:00
$ app - > helper ( iso_datetime_parser = > sub {
2017-09-08 12:46:54 +01:00
return DateTime::Format::Strptime - > new ( pattern = > '%Y-%m-%dT%H:%M:%S.%3N%z' ) ;
} ) ;
$ app - > helper ( iso_date_parser = > sub {
return DateTime::Format::Strptime - > new ( pattern = > '%Y-%m-%d' ) ;
} ) ;
2017-09-19 17:23:30 +01:00
$ app - > helper ( iso_month_parser = > sub {
return DateTime::Format::Strptime - > new ( pattern = > '%Y-%m' ) ;
} ) ;
2017-09-08 12:46:54 +01:00
$ app - > helper ( parse_iso_date = > sub {
my ( $ c , $ date_string ) = @ _ ;
return $ c - > iso_date_parser - > parse_datetime (
$ date_string ,
) ;
} ) ;
$ app - > helper ( format_iso_date = > sub {
my ( $ c , $ datetime_obj ) = @ _ ;
return $ c - > iso_date_parser - > format_datetime (
$ datetime_obj ,
) ;
} ) ;
2017-09-19 17:23:30 +01:00
$ app - > helper ( parse_iso_month = > sub {
my ( $ c , $ date_string ) = @ _ ;
return $ c - > iso_month_parser - > parse_datetime (
$ date_string ,
) ;
} ) ;
$ app - > helper ( format_iso_month = > sub {
my ( $ c , $ datetime_obj ) = @ _ ;
return $ c - > iso_month_parser - > format_datetime (
$ datetime_obj ,
) ;
} ) ;
2017-09-08 12:46:54 +01:00
$ app - > helper ( parse_iso_datetime = > sub {
my ( $ c , $ date_string ) = @ _ ;
return $ c - > iso_datetime_parser - > parse_datetime (
$ date_string ,
) ;
} ) ;
$ app - > helper ( format_iso_datetime = > sub {
my ( $ c , $ datetime_obj ) = @ _ ;
2018-03-14 19:38:05 +00:00
return unless defined $ datetime_obj ;
2017-09-08 12:46:54 +01:00
return $ c - > iso_datetime_parser - > format_datetime (
$ datetime_obj ,
) ;
} ) ;
$ app - > helper ( db_datetime_parser = > sub {
return shift - > schema - > storage - > datetime_parser ;
} ) ;
$ app - > helper ( format_db_datetime = > sub {
my ( $ c , $ datetime_obj ) = @ _ ;
$ datetime_obj - > set_time_zone ( 'UTC' ) ;
return $ c - > db_datetime_parser - > format_datetime (
$ datetime_obj ,
) ;
} ) ;
2017-08-14 12:45:54 +01:00
}
1 ;