• Stars
    star
    6
  • Rank 2,539,965 (Top 51 %)
  • Language
    PHP
  • Created almost 10 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Framework agnostic and easy to use tool to work with dates.

Date

Author Build Status Packagist Version Packagist Quality Score Test Coverage Gratipay

SensioLabsInsight

Framework agnostic and easy to use tool to work with dates.

One-step installation

Run the following command from terminal in the root of your project:

composer require cerbero/date

Preparation

If you are a Laravel user, you may add the following alias in app/config/app.php to use this tool everywhere:

'aliases' => array(
  'Date' => 'Cerbero\Date',
)

Otherwise add this use statement on top of the classes where you want to use it:

use Cerbero\Date;

Usage

Create one or more DateTime instances

Both strings, array and DateTime objects are allowed as parameters. You can also pass unlimited arguments.

It returns one or many DateTime instances depending on the number of given parameters.

// pass any English textual date to get an instance of DateTime
$DateTime = Date::create('10 May 2000');

// you can pass an array as argument to create an array of DateTime objects
$array = Date::create(array('now', 'next Thursday'));
    
// or even unlimited arguments, an array is returned as well
$array = Date::create('2 March 2010', 'now', 'last Tuesday');

Check if a string is a valid date

$true = Date::isValid('5 October 1980');

// 13 is recognized as month in English dates, so it's not valid
$false = Date::isValid('13/01/2005');

Format one or more dates

Both strings, array and DateTime objects are allowed as first parameter.

It returns one or many formatted strings depending on the number of given parameters.

// '1999-01-30'
$string = Date::format('30 January 1999', 'Y-m-d');

// '1st April, 2014'
$string = Date::format(new DateTime('2014-04-01'), 'jS F, Y');

// array('12/11/10', '01/04/14')
$array = Date::format(array('Nov-12-10', new DateTime('2014-04-01')), 'd/m/y');

Calculate gap between two dates

Both strings and DateTime objects are allowed as parameters. It doesn't matter the order of the dates.

While the gap() method returns an array with the gap details, the other methods return an integer:

// array('years' => 0, 'months' => 11, 'days' => 30, 'hours' => 14, 'minutes' => 48, 'seconds' => 57)
$array = Date::gap('2000-01-01 09:11:03', '1 January 2001');

// 3600
$int = Date::gapInSeconds('January 1st, 2000', '2000-01-01 01:00:00');

// 60
$int = Date::gapInMinutes(new DateTime('2000-01-01'), '2000-01-01 01:00:00');

// 0
$int = Date::gapInHours('2000-01-01 00:59:00', '2000-01-01 00:00:00');

// 14
$int = Date::gapInDays('last week', 'next week');

// 13
$int = Date::gapInMonths('August 2014', '2013 July');

// 9
$int = Date::gapInYears('5 Jan 2010', new DateTime('2000-02-05'));

Calculate the timestamp of one or more dates

Both strings, array and DateTime objects are allowed as parameter.

It returns one or many integer timestamps depending on the number of given parameters.

// 1214870400 (GMT)
$int = Date::timestamp('July 1st, 2008');

// 1276560000 (GMT)
$int = Date::timestamp(new DateTime('2010-06-15'));

// array(1214870400, 1276560000) (GMT)
$array = Date::timestamp(array('July 1st, 2008', new DateTime('2010-06-15')), 'd/m/y');

Compare two dates

Both strings and DateTime objects are allowed as parameters. It can compare both despite their type.

// check if the first date is Less Than the second one
$false = Date::lt('2007 June', new DateTime('2007-06-01'));

// check if the first date is Less Than or Equals the second one
$true = Date::lte(new DateTime('2007-06-01'), '2007 June');

// check if the first date EQuals the second one
$true = Date::eq('2007 June', new DateTime('2007-06-01'));

// check if the first date does Not EQual the second one
$false = Date::neq(new DateTime('2007-06-01'), '2007 June');

// check if the first date is Greater Than or Equals the second one
$true = Date::gte('2007 June', new DateTime('2007-06-01'));

// check if the first date is Greater Than the second one
$false = Date::gt(new DateTime('2007-06-01'), '2007 June');

Find the earliest date

Both strings, array and DateTime objects are allowed as parameters. You can also pass unlimited arguments.

It returns the string or the DateTime instance with the earliest date.

// '03/10/1998'
$string = Date::earliest(array('03/10/1998', new DateTime('2006-12-09'), 'yesterday'));

// the DateTime with the date '2009-03-06'
$DateTime = Date::earliest('next Wednesday', new DateTime('2009-03-06'), '19 Nov 2010');

Find the latest date

Both strings, array and DateTime objects are allowed as parameters. You can also pass unlimited arguments.

It returns the string or the DateTime instance with the latest date.

// 'tomorrow'
$string = Date::latest('tomorrow', '10 January 2015', new DateTime('2014-11-04'));

// the DateTime with the date '2016-01-01'
$DateTime = Date::latest(array('last Friday', new DateTime('2016-01-01'), '10/06/80'));

Find all the dates before a date

Both string and DateTime object are allowed as first parameter.

It returns only strings and DateTime instances passed as second argument with dates before the first parameter.

// array(DateTime('2000-09-16'), 'May 1st, 2009')
$array = Date::before('yesterday', array(new DateTime('2000-09-16'), 'tomorrow', 'May 1st, 2009'));

// array(DateTime('2009-03-06'), '19 Nov 2010')
$array = Date::before(new DateTime('2014-01-01'), array(new DateTime('2009-03-06'), '19 Nov 2010', 'July 1st, 2015'));

Find all the dates after a date

Both string and DateTime object are allowed as first parameter.

It returns only strings and DateTime instances passed as second argument with dates after the first parameter.

// array(DateTime('2007-10-28'), 'next Monday')
$array = Date::after('March 1879', array(new DateTime('2007-10-28'), 'next Monday', 'February 1879'));

// array(DateTime('2003-02-14'), 'now')
$array = Date::after(new DateTime('2002-02-20'), array(new DateTime('2003-02-14'), 'now', '12/31/2001'));

Sort dates in ascending order

Both strings, array and DateTime objects are allowed as parameters. You can also pass unlimited arguments.

It returns an array with the strings and DateTime instances sorted in ascending order.

// array('Apr-17-1790', 'June 2008', new DateTime('2015-02-01'))
$array = Date::sort('June 2008', new DateTime('2015-02-01'), 'Apr-17-1790');

// array(new DateTime('2014-11-22'), 'yesterday', 'next Wednesday')
$array = Date::sort(array('next Wednesday', new DateTime('2014-11-22'), 'yesterday'));

Sort dates in descending order

Both strings, array and DateTime objects are allowed as parameters. You can also pass unlimited arguments.

It returns an array with the strings and DateTime instances sorted in descending order.

// array(new DateTime('2015-02-01'), 'June 2008', 'Apr-17-1790')
$array = Date::reverse('June 2008', new DateTime('2015-02-01'), 'Apr-17-1790');

// array('next Wednesday', 'yesterday', new DateTime('2014-11-22'))
$array = Date::reverse(array('next Wednesday', new DateTime('2014-11-22'), 'yesterday'));

Create a range of dates

Both strings and DateTime objects are allowed as first and second parameter. Optionally you can set a step.

It returns an array with all DateTime instances between the starting date and the ending date (included).

// array of 22 DateTime instances, from 2008-06-10 to 2008-07-01 included
$array = Date::range('10-June 2008', new DateTime('July 1st, 2008'));

// array of 11 DateTime instances, only even dates from 2008-06-10 to 2008-06-30 included
$array = Date::range('10-June 2008', new DateTime('July 1st, 2008'), 2);

Check if a date is present in an array

Both strings and DateTime objects are allowed as first parameter.

$true = Date::inArray('03/06/09', array(new DateTime('2009-03-06'), '19 Nov 2010'));

$true = Date::inArray(new DateTime('2004-09-21'), array('last week', '21 Sep 2004'));

$false = Date::inArray('now', array('yesterday', 'tomorrow'));

More Repositories

1

json-parser

🧩 Zero-dependencies lazy parser to read JSON of any dimension and from any source in a memory-efficient way.
PHP
676
star
2

lazy-json

🐼 Framework-agnostic package to load JSON of any dimension and from any source into Laravel lazy collections recursively.
PHP
235
star
3

enum

🎲 Zero-dependencies PHP library to supercharge enum functionalities.
PHP
188
star
4

command-validator

Validate Laravel console commands input.
PHP
160
star
5

laravel-enum

Discontinued. Enum generator for Laravel.
PHP
136
star
6

eloquent-inspector

🕵️ Inspect Laravel Eloquent models to collect properties, relationships and more.
PHP
115
star
7

Workflow

Laravel 5 package to create extendible and maintainable apps by harnessing the power of pipelines.
PHP
109
star
8

query-filters

Laravel package to filter Eloquent model records based on query parameters. Fully inspired by the Laracasts episode https://laracasts.com/series/eloquent-techniques/episodes/4
PHP
84
star
9

lazy-json-pages

📜 Framework-agnostic package to load items from any paginated JSON API into a Laravel lazy collection via async HTTP requests.
PHP
82
star
10

notifiable-exception

Laravel package to send notifications when some exceptions are thrown.
PHP
76
star
11

exception-handler

Extend the Laravel exception handler to let service providers determine how custom exceptions should be handled.
PHP
60
star
12

laravel-dto

Data Transfer Object (DTO) for Laravel
PHP
55
star
13

Auth

Laravel authentication module.
PHP
49
star
14

octane-testbench

⛽ Set of utilities to test Laravel applications powered by Octane.
PHP
42
star
15

sql-dumper

Laravel package to dump SQL queries, related EXPLAIN and location in code in different formats.
PHP
23
star
16

pest-plugin-laravel-octane

⛽ Pest plugin to test Laravel applications powered by Octane.
PHP
21
star
17

json-objects

Extract objects from large JSON files, endpoints or streams while saving memory.
PHP
20
star
18

dto

Data Transfer Object (DTO).
PHP
16
star
19

Transformer

Framework agnostic package to transform objects and arrays by manipulating, casting and mapping their properties.
PHP
14
star
20

Sublime-Text-PHP-and-Laravel-Snippets

Sublime Text snippets to ease development with PHP and Laravel.
13
star
21

console-tasker

🦾 Laravel package to create lean, powerful, idempotent and beautiful Artisan commands.
PHP
10
star
22

workflow-demo

Demo for Workflow repository
CSS
9
star
23

start

Mac service written in Automator to run several softwares and commands by pressing a hot key.
AppleScript
2
star
24

fluent-api

Framework agnostic starting point to perform fluent calls to any API.
PHP
1
star
25

Affiliate

PHP
1
star