kanagama / calendarar
用于生成日历的扩展数组
v1.0.5
2024-04-27 00:41 UTC
Requires
- php: ^7.4 || ^8.0
- nesbot/carbon: ^2.6
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-26 02:41:50 UTC
README
かれんだらー
功能概述
设置起始日和结束日,并创建从起始日到结束日的日历输出数组。
php7.4 以上
使用方法
通过composer安装
composer require kanagama/calendarar
实例化或静态调用均可行
示例
$calendarar = (new Calendarar())->nextMonth(); $calendarar = Calendarar::nextMonth();
create()
基于日历的起始日和结束日输出日历数组
示例
// example // 今月分のカレンダー用配列を出力する // ※2023年02月に実行したと想定 Calendarar::thisMonth()->create();
返回值
^ array:1 [
2023 => array:1 [
2 => array:5 [
1 => array:7 [
0 => []
1 => []
2 => []
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 1
"week" => 1
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 2
"week" => 1
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 3
"week" => 1
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 4
"week" => 1
"dayOfWeek" => 6
"data" => []
]
]
2 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 5
"week" => 2
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 6
"week" => 2
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 7
"week" => 2
"dayOfWeek" => 2
"data" => []
]
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 8
"week" => 2
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 9
"week" => 2
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 10
"week" => 2
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 11
"week" => 2
"dayOfWeek" => 6
"data" => []
]
]
3 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 12
"week" => 3
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 13
"week" => 3
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 14
"week" => 3
"dayOfWeek" => 2
"data" => []
]
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 15
"week" => 3
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 16
"week" => 3
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 17
"week" => 3
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 18
"week" => 3
"dayOfWeek" => 6
"data" => []
]
]
4 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 19
"week" => 4
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 20
"week" => 4
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 21
"week" => 4
"dayOfWeek" => 2
"data" => []
]
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 22
"week" => 4
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 23
"week" => 4
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 24
"week" => 4
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 25
"week" => 4
"dayOfWeek" => 6
"data" => []
]
]
5 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 26
"week" => 5
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 27
"week" => 5
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 28
"week" => 5
"dayOfWeek" => 2
"data" => []
]
3 => []
4 => []
5 => []
6 => []
]
]
]
]
html()
基于日历的起始日和结束日,用html标签输出日历table
示例
Calendarar::thisMonth()->html();
示例 输出的html 2023/02
<table class="calendarar calendarar-202302"> <thead> <tr> <th class="sun">日</th> <th class="mon">月</th> <th class="tue">火</th> <th class="wed">水</th> <th class="thu">木</th> <th class="fri">金</th> <th class="sat">土</th> </tr> </thead> <tbody> <tr class="week1"> <td class="sun day-none"></td> <td class="mon day-none"></td> <td class="tue day-none"></td> <td class="wed day-1">1</td> <td class="thu day-2">2</td> <td class="fri day-3">3</td> <td class="sat day-4">4</td> </tr> <tr class="week2"> <td class="sun day-5">5</td> <td class="mon day-6">6</td> <td class="tue day-7">7</td> <td class="wed day-8">8</td> <td class="thu day-9">9</td> <td class="fri day-10">10</td> <td class="sat day-11">11</td> </tr> <tr class="week3"> <td class="sun day-12">12</td> <td class="mon day-13">13</td> <td class="tue day-14">14</td> <td class="wed day-15">15</td> <td class="thu day-16">16</td> <td class="fri day-17">17</td> <td class="sat day-18">18</td> </tr> <tr class="week4"> <td class="sun day-19">19</td> <td class="mon day-20">20</td> <td class="tue day-21">21</td> <td class="wed day-22">22</td> <td class="thu day-23">23</td> <td class="fri day-24">24</td> <td class="sat day-25">25</td> </tr> <tr class="week5"> <td class="sun day-26">26</td> <td class="mon day-27">27</td> <td class="tue day-28">28</td> <td class="wed day-none"></td> <td class="thu day-none"></td> <td class="fri day-none"></td> <td class="sat day-none"></td> </tr> </tbody> </table>
startOfMonday()
将日历的周始设为星期一
示例
Calendarar::thisMonth() ->startOfMonday() ->html()
<table class="calendarar calendarar-202302"> <thead> <tr> <th class="mon">月</th> <th class="tue">火</th> <th class="wed">水</th> <th class="thu">木</th> <th class="fri">金</th> <th class="sat">土</th> <th class="sun">日</th> </tr> </thead> <tbody> <tr class="week1"> <td class="mon day-none"></td> <td class="tue day-none"></td> <td class="wed day-1">1</td> <td class="thu day-2">2</td> <td class="fri day-3">3</td> <td class="sat day-4">4</td> <td class="sun day-5">5</td> </tr>
startOfSunday()
将日历的周始设为星期日(默认)
示例
Calendarar::thisMonth() ->startOfSunday() ->html()
<table class="calendarar calendarar-202302"> <thead> <tr> <th class="sun">日</th> <th class="mon">月</th> <th class="tue">火</th> <th class="wed">水</th> <th class="thu">木</th> <th class="fri">金</th> <th class="sat">土</th> </tr> </thead> <tbody> <tr class="week1"> <td class="sun day-none"></td> <td class="mon day-none"></td> <td class="tue day-none"></td> <td class="wed day-1">1</td> <td class="thu day-2">2</td> <td class="fri day-3">3</td> <td class="sat day-4">4</td> </tr>
isStartOfMonday()
判断日历的周始是否为星期一
isStartOfSunday()
判断日历的周始是否为星期日
setEncoding
通过html()输出table.thead.tr.th的内容,指定为ja或en
示例
// デフォルト値は ja Calendarar::thisMonth() ->setEncoding('en') ->html()
<thead> <tr> <th class="sun">sun</th> <th class="mon">mon</th> <th class="tue">tue</th> <th class="wed">wed</th> <th class="thu">thu</th> <th class="fri">fri</th> <th class="sat">sat</th> </tr> </thead>
setTrTemplate(string $template)
更改html()输出的table.thead.tr.th标签内的模板
默认值
{{dayOfWeek}}
{{dayOfWeek}}会被转换为星期字符串
示例
Calendarar::thisMonth() ->setTrTemplate('<span class="bold">{{dayOfWeek}}</span>') ->html()
<thead> <tr> <th class="sun"><span class="bold">日</span></th> <th class="mon"><span class="bold">月</span></th> <th class="tue"><span class="bold">火</span></th> <th class="wed"><span class="bold">水</span></th> <th class="thu"><span class="bold">木</span></th> <th class="fri"><span class="bold">金</span></th> <th class="sat"><span class="bold">土</span></th> </tr> </thead>
setDay(int $year, int $month, int $day, mixed $data)
在指定日期存储$data
示例
Calendarar::thisMonth() ->setDay(2023, 2, 23, [ 'holiday' => true, 'holiday_name' => '天皇誕生日', ]) ->create()
^ array:1 [
2023 => array:1 [
2 => array:5 [
1 => array:7 [
0 => []
1 => []
2 => []
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 1
"week" => 1
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 2
"week" => 1
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 3
"week" => 1
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 4
"week" => 1
"dayOfWeek" => 6
"data" => []
]
]
2 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 5
"week" => 2
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 6
"week" => 2
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 7
"week" => 2
"dayOfWeek" => 2
"data" => []
]
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 8
"week" => 2
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 9
"week" => 2
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 10
"week" => 2
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 11
"week" => 2
"dayOfWeek" => 6
"data" => []
]
]
3 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 12
"week" => 3
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 13
"week" => 3
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 14
"week" => 3
"dayOfWeek" => 2
"data" => []
]
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 15
"week" => 3
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 16
"week" => 3
"dayOfWeek" => 4
"data" => []
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 17
"week" => 3
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 18
"week" => 3
"dayOfWeek" => 6
"data" => []
]
]
4 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 19
"week" => 4
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 20
"week" => 4
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 21
"week" => 4
"dayOfWeek" => 2
"data" => []
]
3 => array:6 [
"year" => 2023
"month" => 2
"day" => 22
"week" => 4
"dayOfWeek" => 3
"data" => []
]
4 => array:6 [
"year" => 2023
"month" => 2
"day" => 23
"week" => 4
"dayOfWeek" => 4
"data" => [
'holiday' => true,
'holiday_name' => '天皇誕生日',
],
]
5 => array:6 [
"year" => 2023
"month" => 2
"day" => 24
"week" => 4
"dayOfWeek" => 5
"data" => []
]
6 => array:6 [
"year" => 2023
"month" => 2
"day" => 25
"week" => 4
"dayOfWeek" => 6
"data" => []
]
]
5 => array:7 [
0 => array:6 [
"year" => 2023
"month" => 2
"day" => 26
"week" => 5
"dayOfWeek" => 0
"data" => []
]
1 => array:6 [
"year" => 2023
"month" => 2
"day" => 27
"week" => 5
"dayOfWeek" => 1
"data" => []
]
2 => array:6 [
"year" => 2023
"month" => 2
"day" => 28
"week" => 5
"dayOfWeek" => 2
"data" => []
]
3 => []
4 => []
5 => []
6 => []
]
]
]
]
setTdTemplate(string $template)
更改html()输出的table.tbody.tr.td标签内的模板
默认值
{{day}}
{{day}}会被转换为数值日期
示例
Calendarar::thisMonth() ->setTdTemplate('<span class="bold">{{day}}</span>') ->html()
<tbody> <tr class="week1"> <td class="sun"></td> <td class="mon"></td> <td class="tue"></td> <td class="wed"><span class="bold">1</span></td> <td class="thu"><span class="bold">2</span></td> <td class="fri"><span class="bold">3</span></td> <td class="sat"><span class="bold">4</span></td> </tr>
set(mixed $start, mixed $end)
将第一个参数设置为日历起始日,第二个参数设置为日历结束日
※第一个参数转换为月初,第二个参数转换为月末
setStartMonth(mixed $start)
设置日历起始月
※转换为月初
setEndMonth(mixed $end)
设置日历结束月
※转换为月末
thisMonth()
设置当前月1个月的日历
示例
Calendarar::thisMonth();
lastMonth()
设置上个月1个月的日历
示例
Calendarar::lastMonth();
nextMonth()
设置下个月1个月的日历
示例
Calendarar::nextMonth();
oneYear()
设置从当前月开始的12个月的日历
示例
Calendarar::oneYear();
getStartDatetime()
显示设置的日历起始日
示例
Calendarar::thisMonth()->getStartDatetime();
getEndDatetime()
显示设置的日历结束日
示例
Calendarar::thisMonth()->getEndDatetime();
addStartYear(int $add)
将日历起始年前进$add年
示例
Calendarar::addStartYear(1);
addEndYear(int $add)
将日历结束年前进$add年
示例
Calendarar::addEndYear(1);
subStartYear(int $sub)
将日历起始年后退$sub年
示例
Calendarar::subStartYear(1);
subEndYear(int $sub)
将日历结束年后退$sub年
示例
Calendarar::subEndYear(1);
addStartMonth(int $add)
将日历起始月前进$add月
Calendarar::addStartMonth(1);
addEndMonth(int $add)
将日历结束月前进$add月
示例
Calendarar::addEndMonth(1);
subStartMonth(int $sub)
将日历起始月后退$sub月
示例
Calendarar::subStartMonth(1);
subEndMonth(int $sub)
将日历结束月后退$sub月
示例
Calendarar::subEndMonth(1);