DateTime Rounding#
A tool to truncate a DateTime instance to a specific time unit.
Installation#
composer require 'arokettu/datetime-rounding'
Documentation#
<?php
use Arokettu\DateTime\DateTimeTruncate;
use Carbon\CarbonImmutable;
// to hours
$dateTime = new DateTimeImmutable('2012-03-04T05:06:07.890123Z');
echo DateTimeTruncate::toHours($dateTime)->format('c'); // 2012-03-04T05:00:00+00:00
// or
echo DateTimeTruncate::truncate($dateTime, DateTimeTruncate::TO_HOURS)->format('c'); // same
// truncating to dates uses the DT timezone
$dateTime = new DateTimeImmutable('2012-03-04T05:06:07.890123 Europe/Stockholm');
echo DateTimeTruncate::toMonths($dateTime)->format('c'); // 2012-03-01T00:00:00+01:00
// using mutable will change the object
$dateTime = new DateTime('2012-03-04T05:06:07.890123Z');
DateTimeTruncate::toMinutes($dateTime);
echo $dateTime->format('c'); // 2012-03-04T05:06:00+00:00
// the tool tries to preserve the extended objects as well
$dateTime = new CarbonImmutable('2012-03-04T05:06:07.890123Z');
echo get_class(DateTimeTruncate::toMonths($dateTime)); // Carbon\CarbonImmutable
Supported precisions:
microseconds (
DateTimeTruncate::TO_MICROSECONDS
)milliseconds (
DateTimeTruncate::TO_MILLISECONDS
)seconds (
DateTimeTruncate::TO_SECONDS
)minutes (
DateTimeTruncate::TO_MINUTES
)hours (
DateTimeTruncate::TO_HOURS
)days (
DateTimeTruncate::TO_DAYS
)ISO weeks (
DateTimeTruncate::TO_WEEKS
)months (
DateTimeTruncate::TO_MONTHS
)calendar years (
DateTimeTruncate::TO_YEARS
)ISO years (
DateTimeTruncate::TO_ISO_YEARS
)
License#
The library is available as open source under the terms of the MIT License.