fmeccanici / dlvr
DLVR - PHP配送日期估算
v1.0.6
2022-10-10 19:10 UTC
Requires
- illuminate/collections: ^9.33
- nesbot/carbon: ^2.62
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-10 23:06:08 UTC
README
此软件包允许您根据工作日程、给定开始日期和工作日数量来确定配送日期。
安装
composer install fmeccanici/dlvr
示例
常规工作周
<?php require(__DIR__.'/../vendor/autoload.php'); use Carbon\CarbonImmutable; use Carbon\CarbonInterface; use Fmeccanici\Dlvr\Builders\WorkScheduleBuilder; $workScheduleBuilder = new WorkScheduleBuilder(); $workSchedule = $workScheduleBuilder->addRegularWorkWeek()->build(); $leadTimeInWorkDays = 6; $now = CarbonImmutable::now()->next(CarbonInterface::MONDAY)->setHour(10)->setMinute(0); $dueDate = $workSchedule->deliveryDate($now, $leadTimeInWorkDays); // Delivery date next Tuesday var_dump($dueDate->toDateTimeString());
不规则工作日
<?php require(__DIR__.'/../vendor/autoload.php'); use Carbon\CarbonImmutable; use Carbon\CarbonInterface; use Fmeccanici\Dlvr\Builders\WorkScheduleBuilder; $workScheduleBuilder = new WorkScheduleBuilder(); $workSchedule = $workScheduleBuilder ->addRegularWorkWeek() ->addDeviatingWorkHours(CarbonImmutable::now()->next(CarbonImmutable::MONDAY), 9, 0, 12, 0) ->build(); $leadTimeInWorkDays = 6; $now = CarbonImmutable::now()->next(CarbonInterface::MONDAY)->setHour(10)->setMinute(0); $dueDate = $workSchedule->deliveryDate($now, $leadTimeInWorkDays); // Delivery date next Tuesday var_dump($dueDate->toDateTimeString());
假日
<?php require(__DIR__.'/../vendor/autoload.php'); use Carbon\CarbonImmutable; use Carbon\CarbonInterface; use Fmeccanici\Dlvr\Builders\WorkScheduleBuilder; $workScheduleBuilder = new WorkScheduleBuilder(); $workSchedule = $workScheduleBuilder->addRegularWorkWeek()->build(); $workSchedule->addHoliday(CarbonImmutable::now()->nextWeekday()); $leadTimeInWorkDays = 6; $now = CarbonImmutable::now()->next(CarbonInterface::MONDAY)->setHour(10)->setMinute(0); $dueDate = $workSchedule->deliveryDate($now, $leadTimeInWorkDays); // Delivery date next Wednesday var_dump($dueDate->toDateTimeString());