DateTime library
This library provides immutable classes to handle dates and times. Builds upon PHPs DateTime
implementation.
The interface is similar to PHPs DateTime
class:
// Get the current moment
$now = \BjoernGoetschke\DateTime\Moment::now();
echo $now->format("Y-m-d H:i:s P").PHP_EOL;
// Add one day
$tomorrow = $now->add(new \BjoernGoetschke\DateTime\Interval('P1D'));
echo $tomorrow->format("Y-m-d H:i:s P").PHP_EOL;
There is also a class that represents a moment without timezone information and one that represents only the date without any time and timezone information:
// Convert the current moment to a `BjoernGoetschke\DateTime\LocalMoment` object
// which only holds the date and time, but no timezone information
$localMoment = $now->toLocalMoment();
echo $localMoment.PHP_EOL;
// Convert the local moment to a `BjoernGoetschke\DateTime\Date` object
// which only holds the date, but no time or timezone information
$todaysDate = $localMoment->toDate();
echo $todaysDate.PHP_EOL;
The library is available via Composer:
composer require bjoern-goetschke/datetime:^1.0
Releases will be numbered with the following format using semantic versioning:
<major>.<minor>.<patch>
And constructed with the following guidelines:
For more information on semantic versioning, please visit http://semver.org/.
The library is released under the BSD-2-Clause license. You can find a copy of this license in LICENSE.txt.
Information about the intended usage of interfaces, classes, methods, etc. is specified with the @api
tag.
If an element does not contain the @api
tag it should be considered internal and usage may break at any time.
One exception to this rule are special elements like constructors, destructors or other hook methods that are defined
by the programming language. These elements will not have their own @api
tag but can be considered as if they have
the same @api
tag as the class or whatever other element they belong to.
@api usage
major
-releasesmajor
-releasesminor
-releases should be ok most of the time
(will break if a non-private method has been added to the base class that was also declared
in the extending class)major
-releasesminor
-releases should be ok most of the time
(will break if an optional argument has been added to the method in the base-class)major
-releasesmajor
-releasesminor
-releases should be ok most of the time
(will break if new methods have been added to the interface)minor
-releases should be ok most of the time
(will break if a method has been added to the base interface that was also declared
in the extending interface)@api extend
major
-releasesmajor
-releasesminor
-releases, but it should be ok most of the time and may only break on major
-releases
(will break if a non-private method has been added to the base class that was also declared in the
extending class)major
-releasesmajor
-releasesmajor
-releasesmajor
-releasesmajor
-releasesmajor
-releases@api stable
major
-releases, this means that except some minor internal
changes or bugfixes the code will just never change at all@api internal
patch
-releases should be ok most of the time