kanagama/calendarar

用于生成日历的扩展数组

v1.0.5 2024-04-27 00:41 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);