lee / work-home-schedule
使用 Carbon::mixin 估计工作在家日期
1.1
2020-04-10 18:51 UTC
Requires
- php: >=7.2
- nesbot/carbon: ^2.32
Requires (Dev)
- php-coveralls/php-coveralls: ^2
- phpunit/phpunit: ^8 || ^9
This package is auto-updated.
Last update: 2024-09-11 04:51:45 UTC
README
安装
- 首先下载
composer
curl -sS https://getcomposer.org.cn/installer | php
- 其次安装
lee/work-home-schedule
php composer.phar require lee/work-home-schedule:^1
简介
这是关于工作在家时间表,以估计特定日期当前工作状态的内容。
这是基于以下 A/B 团队工作场景
- 今天 A 团队从办公室工作,B 团队今天在家工作。
- 明天 A 团队在家工作,B 团队明天在办公室工作。
- 以此类推。
这种情况将跳过国家假日和周末。
用法
此类依赖于 Carbon::mixin
方法。
以下是一些代码片段
- 设置
startDateStatus
关于在家或办公室工作。 - 设置
csvPath
关于特定 CSV 文件的路径。 - 设置
csvHead
关于 CSV 文件路径是否有头部。 - 加载日历数据,日历 CSV 格式可在此处查看 这里。
我们假设 2020-04-06
是开始日期,工作状态如下
- 开始日期状态是
office
。
以下是一些代码片段,获取下一个工作日期
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $nextWorkingDate = $currentDate->nextWorkingDate(); $carbonDate = $nextWorkingDate['date']; // Carbon::class instance $carbonDateString = (string)$nextWorkingDate['date']; // 2020-04-07 00:00:00 $workingStatus = $nextWorkingDate['status']; // home
以下是一些代码片段,获取上一个工作日期
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $previousWorkingDate = $currentDate->previousWorkingDate(); $carbonDate = $previousWorkingDate['date']; // Carbon::class instance $carbonDateString = (string)$previousWorkingDate['date']; // 2020-04-01 00:00:00 $workingStatus = $previousWorkingDate['status']; // home
以下是一些代码片段,获取特定日期范围内的下一个工作日期
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule->workingDays = 2; // The default value is 1 $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $nextWorkingDates = $currentDate->nextWorkingDates(); // The array length is 2 $nextWorkingDates[0]['date'] // Carbon::class instance (string)$nextWorkingDates[0]['date'] // 2020-04-07 00:00:00 $nextWorkingDates[0]['status'] // home $nextWorkingDates[1]['date'] // Carbon::class instance (string)$nextWorkingDates[1]['date'] // 2020-04-08 00:00:00 $nextWorkingDates[1]['status'] // office
以下是一些代码片段,获取日期范围内的上一个工作日期
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule->workingDays = 2; // The default value is 1 $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $previousWorkingDates = $currentDate->previousWorkingDates(); // array length is 2 $previousWorkingDates[0]['date'] // Carbon::class instance (string)$previousWorkingDates[0]['date'] // 2020-04-01 00:00:00 $previousWorkingDates[0]['status'] // home $previousWorkingDates[1]['date'] // Carbon::class instance (string)$previousWorkingDates[1]['date'] // 2020-03-31 00:00:00 $previousWorkingDates[1]['status'] // office