Skip to content

bayfrontmedia/php-time-helpers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP time helpers

Helper class to provide useful time related functions.

License

This project is open source and available under the MIT License.

Author

Bayfront Media

Requirements

  • PHP ^8.0 (Tested up to 8.4)

Installation

composer require bayfrontmedia/php-time-helpers

Usage


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, PHP date('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:

  • year
  • month
  • week
  • day
  • hour
  • minute
  • second

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);

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);