withinboredom / time
Converting time to units
Installs: 1 136
Dependents: 1
Suggesters: 0
Security: 0
Stars: 10
Watchers: 3
Forks: 6
Open Issues: 0
Requires (Dev)
- laravel/pint: ^1.14
- pestphp/pest: ^2.34
README
This is a simple library for interacting with time durations. You can write your code to expect seconds:
function sleep(\Withinboredom\Time\AnyTime $time): void { \sleep($time->inSeconds()); } sleep(\Withinboredom\Time\Minutes(5)->inSeconds());
Equality
All values of the same time are always strongly equaled to each other:
\Withinboredom\Time\Minutes(60) === \Withinboredom\Time\Hours(1)
Utilities
There are also a few utility methods:
->add(AnyTime)->subtract(AnyTime): AnyTime
Add and subtract durations.
->toDateInterval(): DateInterval
Creates a date interval for use in other things.
Conversions
If you need to change the conversion rates, create a new standard:
class Mars implements \Withinboredom\Time\TimeAndSpaceInterface { /// ... fill in the blanks }
This can be (mis)used to allow for very short times in unit tests (to make a week pass by in literally microseconds).
Units
- Nanoseconds
- Microseconds
- Milliseconds
- Minutes
- Hours
- Days
- Weeks
FAQ
Why not months/years?
There's no set days in a month/year, so it's better to use DateInterval
for those types of measures.
Why does this exist?
I don't like magic numbers.
Can I convert between standards?
Not yet.
How performant is this?
The main overhead is in autoloading and function-call overhead. Thus, if realtime performance is a concern, you might want to stick to magic numbers.
Developing
If you wish to create a PR or update the code here:
- Clone the repo
composer install
to install test dependenciesyarn
to install git hooks for formatting- Open in favorite IDE.
Code Standards
Per coding styles are followed.