2018-12-16 15:18:17 -06:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Time.php
|
|
|
|
*
|
|
|
|
* -Description-
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
2021-02-09 00:29:04 +01:00
|
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
2018-12-16 15:18:17 -06:00
|
|
|
*
|
2021-02-09 00:29:04 +01:00
|
|
|
* @link https://www.librenms.org
|
2021-09-10 20:09:53 +02:00
|
|
|
*
|
2018-12-16 15:18:17 -06:00
|
|
|
* @copyright 2018 Tony Murray
|
|
|
|
* @author Tony Murray <murraytony@gmail.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace LibreNMS\Util;
|
|
|
|
|
|
|
|
class Time
|
|
|
|
{
|
|
|
|
public static function legacyTimeSpecToSecs($description)
|
|
|
|
{
|
|
|
|
$conversion = [
|
|
|
|
'now' => 0,
|
|
|
|
'onehour' => 3600,
|
|
|
|
'fourhour' => 14400,
|
|
|
|
'sixhour' => 21600,
|
|
|
|
'twelvehour' => 43200,
|
|
|
|
'day' => 86400,
|
|
|
|
'twoday' => 172800,
|
|
|
|
'week' => 604800,
|
|
|
|
'twoweek' => 1209600,
|
|
|
|
'month' => 2678400,
|
|
|
|
'twomonth' => 5356800,
|
|
|
|
'threemonth' => 8035200,
|
|
|
|
'year' => 31536000,
|
|
|
|
'twoyear' => 63072000,
|
|
|
|
];
|
|
|
|
|
|
|
|
return isset($conversion[$description]) ? $conversion[$description] : 0;
|
|
|
|
}
|
2019-03-18 03:09:58 +01:00
|
|
|
|
|
|
|
public static function formatInterval($interval, $format = 'long')
|
|
|
|
{
|
|
|
|
$result = '';
|
|
|
|
$data = [
|
|
|
|
'years' => 31536000,
|
|
|
|
'days' => 86400,
|
|
|
|
'hours' => 3600,
|
|
|
|
'minutes' => 60,
|
|
|
|
'seconds' => 1,
|
|
|
|
];
|
|
|
|
|
|
|
|
foreach ($data as $k => $v) {
|
|
|
|
if ($interval >= $v) {
|
|
|
|
$diff = floor($interval / $v);
|
|
|
|
|
|
|
|
$result .= " $diff";
|
|
|
|
if ($format == 'short') {
|
|
|
|
$result .= substr($k, 0, 1);
|
2020-02-05 18:58:52 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($format != 'short' && $diff > 1) {
|
2019-03-18 03:09:58 +01:00
|
|
|
$result .= ' ' . $k;
|
2020-02-05 18:58:52 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($format != 'short' && $diff < 2) {
|
|
|
|
$result .= ' ' . substr($k, 0, -1);
|
2019-03-18 03:09:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
$interval -= $v * $diff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
}
|
2020-06-22 22:57:30 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @param integer seconds of a time period
|
|
|
|
* @return string human readably time period
|
|
|
|
*/
|
|
|
|
public static function humanTime($s)
|
|
|
|
{
|
|
|
|
$ret = [];
|
|
|
|
|
|
|
|
if ($s >= 86400) {
|
|
|
|
$d = floor($s / 86400);
|
|
|
|
$s -= $d * 86400;
|
|
|
|
if ($d == 1) {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $d . ' day';
|
2020-06-22 22:57:30 +02:00
|
|
|
} else {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $d . ' days';
|
2020-06-22 22:57:30 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($s >= 3600) {
|
|
|
|
$h = floor($s / 3600);
|
|
|
|
$s -= $h * 3600;
|
|
|
|
if ($h == 1) {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $h . ' hour';
|
2020-06-22 22:57:30 +02:00
|
|
|
} else {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $h . ' hours';
|
2020-06-22 22:57:30 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($s >= 60) {
|
|
|
|
$m = floor($s / 60);
|
|
|
|
$s -= $m * 60;
|
|
|
|
if ($m == 1) {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $m . ' minute';
|
2020-06-22 22:57:30 +02:00
|
|
|
} else {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $m . ' minutes';
|
2020-06-22 22:57:30 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($s > 0) {
|
|
|
|
if ($s == 1) {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $s . ' second';
|
2020-06-22 22:57:30 +02:00
|
|
|
} else {
|
2020-09-21 15:59:34 +02:00
|
|
|
$ret[] = $s . ' seconds';
|
2020-06-22 22:57:30 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return implode(' ,', $ret);
|
|
|
|
}
|
2018-12-16 15:18:17 -06:00
|
|
|
}
|