Skip to content

hill-valley/fluxcap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ad1e71e · Feb 9, 2024

History

18 Commits
Feb 9, 2024
Feb 9, 2024
Feb 9, 2024
Jul 15, 2021
Feb 9, 2024
Feb 9, 2024
May 7, 2022
Jan 3, 2021
May 7, 2022
Feb 9, 2024
Feb 9, 2024
Feb 9, 2024

Repository files navigation

fluxcap

This package contains:

  • immutable classes DateTime, Date and Time (wrapping \DateTimeImmutable)
  • immutable class TimeZone (wrapping \DateTimeZone)
  • immutable class Duration (wrapping \DateInterval)
  • enums Month and Weekday

Latest release PHP version requirement Psalm type coverage License

Installation

composer require hill-valley/fluxcap

Examples

DateTime, Date, Time

use HillValley\Fluxcap\DateTime;
use HillValley\Fluxcap\Date;
use HillValley\Fluxcap\Time;
use HillValley\Fluxcap\TimeZone;

$dateTime = DateTime::now();
$dateTime = DateTime::fromString('2015-10-21 09:30:00');
$dateTime = DateTime::fromString('2015-10-21 09:30:00', TimeZone::fromString('Europe/Berlin'));
$dateTime = DateTime::fromFormat('d.m.Y H.i', '21.10.2015 09.30');
$dateTime = DateTime::fromParts(2015, 10, 21, 9, 30, 0);
$dateTime = DateTime::fromNative(new \DateTimeImmutable());

$date = Date::today();
$date = Date::fromString('2015-10-21');

$time = Time::now();
$time = Time::fromString('09:30:00');

$dateTime->getYear();
$dateTime->toIso(); // 2015-10-21T09:30:00.000000+02:00
$dateTime->format('d.m.Y, H:i');
$dateTime->formatIntl(\IntlDateFormatter::MEDIUM); // requires intl extension

$dateTime2 = $dateTime->addDays(3);
$date2 = $date->toLastDayOfMonth();
$date2 = $date->toFirstDayOfQuarter();

$dateTime->isPast();
$dateTime->equals($dateTime2);
$dateTime->lowerEquals($dateTime2);
$duration = $dateTime->diff($dateTime2);

Duration

use HillValley\Fluxcap\Duration;

$duration = Duration::fromString('P2DT5H');
$duration = Duration::fromParts(days: 2, hours: 5);
$duration = Duration::years(2);

$duration->toIso(); // P2DT5H
$duration->format('%d days');
$duration->getHours();

Month, Weekday

use HillValley\Fluxcap\Month;
use HillValley\Fluxcap\Weekday;

$month = Month::October;

$weekdays = Weekday::cases();
$weekday = Weekday::Tuesday;

// same methods for months

$weekday->getName();
$weekday->getAbbreviation();

$weekday->getIntlName(); // via intl extension
$weekday->getIntlAbbreviation();

$count = $weekday->diffToNext(Weekday::Friday);

About

Set of date-time related immutable classes

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages