bayfrontmedia / php-time-helpers
Helper class to provide useful time related functions.
Installs: 1 344
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/bayfrontmedia/php-time-helpers
Requires
- php: ^8.0
 - bayfrontmedia/php-array-helpers: ^2.0
 
README
Helper class to provide useful time related functions.
License
This project is open source and available under the MIT License.
Author
Requirements
- PHP 
^8.0(Tested up to8.4) 
Installation
composer require bayfrontmedia/php-time-helpers
Usage
- getReadTime
 - getDateTime
 - isLeapYear
 - humanArray
 - human
 - toIso8601
 - toTimezone
 - isTimezone
 - isFormat
 - inPast
 - inFuture
 - isBefore
 - isAfter
 - stopwatch
 
getReadTime
Description:
Get estimated minutes necessary to read content, based on reading a given amount of words per minute (WPM).
Parameters:
$content(string)$wpm = 180(int)
Returns:
- (int)
 
Example:
use Bayfront\TimeHelpers\Time;
$content = 'This is a string of content.';
echo Time::getReadTime($content);
getDateTime
Description:
Returns datetime of a given timestamp, or current time (default).
Parameters:
$timestamp = NULL(int|null)
Returns:
- (string)
 
Example:
use Bayfront\TimeHelpers\Time;
echo Time::getDateTime();
isLeapYear
Description:
Checks if a given year is a leap year, using current year by default.
Parameters:
$year = NULL(int|null): Four digit year, PHPdate('Y')format
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
if (Time::isLeapYear()) {
    // Do something
}
humanArray
Description:
Returns human time as an array.
NOTE: Due to discrepancies between the length of certain months and years (ie: leap year), elapsed time calculations for these units of time are approximate (30 days per month, 365 days per year).
Parameters:
$time_start(int): Timestamp of starting time$time_end(int): Timestamp of ending time$limit = 'year'(string): Limit of time duration to calculate$language = NULL(array|null): Custom language to return
Valid $limit values are:
yearmonthweekdayhourminutesecond
Passing a $language array allows you to translate the words returned by this method. The array keys must match those of the default array, which is:
$language = [
    'year' => 'year',
    'years' => 'years',
    'month' => 'month',
    'months' => 'months',
    'week' => 'week',
    'weeks' => 'weeks',
    'day' => 'day',
    'days' => 'days',
    'hour' => 'hour',
    'hours' => 'hours',
    'minute' => 'minute',
    'minutes' => 'minutes',
    'second' => 'second',
    'seconds' => 'seconds',
    'past' => 'ago',
    'present' => 'just now',
    'future' => 'to go'
];
Returns:
- (array)
 
Example:
use Bayfront\TimeHelpers\Time;
$start = time();
$end = time() + 51001;
print_r(Time::humanArray($start, $end, 'minute'));
human
Description:
Returns human time as a string.
For more information, see humanArray.
Parameters:
$time_start(int): Timestamp of starting time$time_end(int): Timestamp of ending time$limit = 'year'(string): Limit of time duration to calculate$language = NULL(array| null): Custom language to return
Returns:
- (string)
 
Example:
use Bayfront\TimeHelpers\Time;
$start = time();
$end = time() + 51001;
echo Time::human($start, $end);
toIso8601
Description:
Convert UTC datetime to ISO-8601 format.
Parameters:
$datetime(int|string): Any valid date/time formatted string or timestamp
Returns:
- (string)
 
toTimezone
Description:
Convert UTC datetime to format using timezone.
See: https://www.php.net/manual/en/timezones.php
Parameters:
$datetime(int|string): Any valid date/time formatted string or timestamp$timezone(string): Any valid timezone identifier$format = 'U'(string): Any valid date/time format
Returns:
- (string)
 
isTimezone
Description:
Checks if string is a valid timezone identifier.
See: https://www.php.net/manual/en/timezones.php
Parameters:
$timezone(string)
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
if (Time::isTimezone('America/New_York')) {
    // Do something
}
isFormat
Description:
Checks if value is a given dateTime format.
See: https://www.php.net/manual/en/function.date.php
Parameters:
$date(string)$format(string): Any valid date/time format$strict = 'true'(bool)
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
$date = '2020-07-18';
if (Time::isFormat($date, 'Y-m-d')) {
    // Do something
}
inPast
Description:
Checks if date/time is in the past.
See: https://www.php.net/manual/en/datetime.formats.php
Parameters:
$date(string): Any valid date/time format
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
if (Time::inPast('last Tuesday')) {
    // Do something
}
inFuture
Description:
Checks if date/time is in the future.
See: https://www.php.net/manual/en/datetime.formats.php
Parameters:
$date(string): Any valid date/time format
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
if (Time::inFuture('2050-12-31')) {
    // Do something
}
isBefore
Description:
Checks if date/time is before a given date/time.
See: https://www.php.net/manual/en/datetime.formats.php
Parameters:
$date(string): Any valid date/time format$before(string): Any valid date/time format
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
if (Time::isBefore('today', '2050-12-31')) {
    // Do something
}
isAfter
Description:
Checks if date/time is after a given date/time.
See: https://www.php.net/manual/en/datetime.formats.php
Parameters:
$date(string): Any valid date/time format$after(string): Any valid date/time format
Returns:
- (bool)
 
Example:
use Bayfront\TimeHelpers\Time;
if (Time::isAfter('today', '2050-12-31')) {
    // Do something
}
stopwatch
Description:
Return the amount of time (in seconds) the callback took to execute.
Parameters:
$callable(callback)$times = 1(int): Number of times to iterate the callback$decimals = 5(int): Number of decimal places to round to
Returns:
- (float)
 
Example:
use Bayfront\TimeHelpers\Time;
$elapsed = Time::stopwatch(function() {
    sleep(2);
}, 2);