Comments (4)
We work around this bug using:
https://github.com/kylekatarnls/business-time/blob/master/src/Cmixin/BusinessTime.php#L256
I hope it can help you @nfragnet
from opening-hours.
Hi, I would add the fact that the method modify the date is unexpected. It should be copied. Then this should be reassigned here: https://github.com/spatie/opening-hours/blob/master/src/OpeningHours.php#L181 to work with immutable date.
from opening-hours.
An other problem is $timeRange iteration is not reset between 2 calls:
https://github.com/spatie/opening-hours/blob/master/src/OpeningHoursForDay.php#L76
from opening-hours.
Thanks a lot for the tips @kylekatarnls
As I had to decorate the whole object anyway for business purposes, I used the decoration to temporary fix the different issues I encountered. As I'm only using few methods, this solution - even if not the prettiest thing I coded - makes the job
final class MyOpeningHours
{
/**
* @var OpeningHours
*/
private $openingHours;
/**
* @var string
*/
private $tz;
public function __construct(array $data, string $tz = 'UTC')
{
$this->openingHours = OpeningHours::create($data);
$this->openingHours->setTimezone($tz);
$this->tz = $tz;
}
public function nextOpen(DateTimeInterface $dateTime) : DateTime
{
$clonedOpeningHours = OpeningHours::create($this->toArray());
$clonedOpeningHours->setTimezone($this->tz);
$clonedDateTime = new DateTime($dateTime->format(DateTime::ATOM));
return $clonedOpeningHours->nextOpen($clonedDateTime);
}
/**
* Return the array that can be used to rebuild another OpeningHours object
*
* @return array In a format acceptable by the __construct and factory method
*
* [
* 'monday' => [...]
* 'tuesday' => [...]
* ...
* ]
*/
public function toArray() : array { //... }
}
I may use your workaround if our needs evolve before the correction is merged :) thanks anyway
from opening-hours.
Related Issues (20)
- [Bug] nextOpen calculates the wrong date for a regular day with exceptions HOT 3
- timezone is set on passed object when getting hours for a specific date HOT 2
- Free time slots during the day ? HOT 1
- nextOpen not respecting timezone HOT 2
- Timezone not working in currentOpenRange HOT 2
- I want to add schedule for specific date HOT 1
- Locale? HOT 1
- GitHub repository link not working HOT 2
- Support for holidays HOT 5
- Overflow support does not seem to work for createAndMergeOverlappingRanges HOT 2
- diffInOpenMinutes() does not work if only one day is configured as open HOT 6
- Date period in exceptions or start and end date for a set of days of the week in regular time HOT 4
- Exceptions with date ranges HOT 5
- [Feature request] createFromStructuredData method
- How to destroy OpeningHours object or update it ? HOT 1
- How to create an exception using datetime with seconds HOT 2
- Adding seconds precision to exceptions HOT 2
- Output time zone taken into account in all methods? HOT 2
- Supporting frontend library HOT 5
- previousOpen returns next open date HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from opening-hours.