From 575023a6ed0acbb34090607e5d10e5d6b7b149d3 Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Mon, 22 Oct 2018 13:37:00 +0000 Subject: [PATCH] UConv.pm: add ::duration() git-svn-id: https://svn.fhem.de/fhem/trunk@17589 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/UConv.pm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/fhem/FHEM/UConv.pm b/fhem/FHEM/UConv.pm index cb5e590e3..e7adc4cf8 100644 --- a/fhem/FHEM/UConv.pm +++ b/fhem/FHEM/UConv.pm @@ -8,6 +8,7 @@ use Scalar::Util qw(looks_like_number); use POSIX qw(strftime); use Data::Dumper; + #################### # Translations @@ -728,6 +729,30 @@ sub distance($$$$;$$) { ( $unit eq "nmi" ? km2nmi($km) : ( $unit ? km2mi($km) : $km ) ), $rnd ); } +sub duration ($$;$) { + my ( $datetimeNow, $datetimeOld, $format ) = @_; + + if ( $datetimeNow eq "" || $datetimeOld eq "" ) { + $datetimeNow = "1970-01-01 00:00:00"; + $datetimeOld = "1970-01-01 00:00:00"; + } + + my $timestampNow = main::time_str2num($datetimeNow); + my $timestampOld = main::time_str2num($datetimeOld); + my $timeDiff = $timestampNow - $timestampOld; + + # return seconds + return _round( $timeDiff, 0 ) + if ( defined($format) && $format eq "sec" ); + + # return minutes + return _round( $timeDiff / 60, 0 ) + if ( defined($format) && $format eq "min" ); + + # return human readable format + return s2hms( _round( $timeDiff, 0 ) ); +} + ################################# ### Textual unit conversions ###