clacy-builders / calendar
基本的日历类。
0.1
2016-04-08 14:47 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-14 19:04:06 UTC
README
安装
此库需要PHP 5.4或更高版本。
将以下内容添加到项目的 composer.json 文件中
{
"minimum-stability": "dev",
"require": {
"clacy-builders/calendar": "dev-master"
}
}
运行 composer install 或 composer update。
基本用法
Calendar 类
<?php require_once 'vendor/autoload.php'; use \ClacyBuilders\Calendar\Calendar; use \ClacyBuilders\Calendar\DateTime; setlocale(LC_TIME, 'de'); $easter = DateTime::easter(2016); $calendar = Calendar::month(5, 2016) ->setMonthFormat('%b %Y') ->setFirstWeekday('DE') ->addEntry('2016-05-01', 'Tag der Arbeit') ->addEntry($easter->copy()->addDays(39), 'Christi Himmelfahrt') ->addEntry($easter->copy()->addDays(50), 'Pfingstmontag') ->addEntry($easter->copy()->addDays(60), 'Fronleichnam'); print json_encode($calendar->buildArray(), JSON_PRETTY_PRINT);
生成的JSON文本
{
"weekdays": {
"mon": "Mo",
"tue": "Di",
"wed": "Mi",
"thu": "Do",
"fri": "Fr",
"sat": "Sa",
"sun": "So"
},
"years": [
{
"time": "2016",
"label": "2016",
"months": [
{
"time": "2016-05",
"label": "Mai 2016",
"month": "05",
"weeks": [
{
"time": "2016-W17",
"label": "17",
"leading": 6,
"days": [
{
"time": "2016-05-01",
"label": "1",
"weekday": "sun",
"entries": [
{
"class": "holiday",
"title": "Tag der Arbeit"
}
]
}
]
},
{
"time": "2016-W18",
"label": "18",
"days": [
{
"time": "2016-05-02",
"label": "2",
"weekday": "mon"
},
{
"time": "2016-05-03",
"label": "3",
"weekday": "tue"
},
{
"time": "2016-05-04",
"label": "4",
"weekday": "wed"
},
{
"time": "2016-05-05",
"label": "5",
"weekday": "thu",
"entries": [
{
"class": "holiday",
"title": "Christi Himmelfahrt"
}
]
},
{
"time": "2016-05-06",
"label": "6",
"weekday": "fri"
},
{
"time": "2016-05-07",
"label": "7",
"weekday": "sat"
},
{
"time": "2016-05-08",
…
参见: https://github.com/clacy-builders/html5-express-php/wiki/Calendar
DateTime 类
require_once 'vendor/autoload.php'; use \ClacyBuilders\Calendar\DateTime;
构造函数
DateTime 扩展了标准的PHP类 DateTime。
假设当前日期是Mon, 04 Apr 2016 16:22:02 +0200
$days[] = new DateTime('2016-03-29'); $days[] = new DateTime(); $days[] = new DateTime('first day of next month');
结果
Tue, 29 Mar 2016 00:00:00 +0200
Mon, 04 Apr 2016 16:22:02 +0200
Sun, 01 May 2016 16:22:02 +0200
工厂方法
假设当前日期是Mon, 04 Apr 2016 16:22:02 +0200
$days[] = DateTime::create(29, 3, 2016); $days[] = DateTime::create(29, 3); $days[] = DateTime::create(29); $days[] = DateTime::create(2016, 3, 29); $days[] = DateTime::create(2016, 3); $days[] = DateTime::create(2016); $days[] = DateTime::create(); $days[] = DateTime::create('2016-03-29'); $days[] = DateTime::create('2016-03'); $days[] = DateTime::create('29.03.2016'); $days[] = DateTime::create('03/29/2016'); $days[] = DateTime::create('last day of previous month'); $days[] = DateTime::easter(2016);
结果
Tue, 29 Mar 2016 00:00:00 +0200
Tue, 29 Mar 2016 00:00:00 +0200
Fri, 29 Apr 2016 00:00:00 +0200
Tue, 29 Mar 2016 00:00:00 +0200
Fri, 04 Mar 2016 00:00:00 +0100
Mon, 04 Apr 2016 00:00:00 +0200
Mon, 04 Apr 2016 00:00:00 +0200
Tue, 29 Mar 2016 00:00:00 +0200
Tue, 01 Mar 2016 00:00:00 +0100
Tue, 29 Mar 2016 00:00:00 +0200
Tue, 29 Mar 2016 00:00:00 +0200
Thu, 31 Mar 2016 16:22:02 +0200
Sun, 27 Mar 2016 00:00:00 +0100
修改日期
$days[] = DateTime::create('2016-03-29')->addYears(2); $days[] = DateTime::create('2016-03-29')->addMonths(-2); $days[] = DateTime::create('2016-03-29')->addDays(3); $days[] = DateTime::create('2016-04-01')->forceWorkday(); $days[] = DateTime::create('2016-04-02')->forceWorkday(); $days[] = DateTime::create('2016-04-03')->forceWorkday(); $days[] = DateTime::create('2016-04-04')->forceWorkday();
结果
Thu, 29 Mar 2018 00:00:00 +0200
Fri, 29 Jan 2016 00:00:00 +0100
Fri, 01 Apr 2016 00:00:00 +0200
Fri, 01 Apr 2016 00:00:00 +0200
Fri, 01 Apr 2016 00:00:00 +0200
Mon, 04 Apr 2016 00:00:00 +0200
Mon, 04 Apr 2016 00:00:00 +0200
使用 copy 方法克隆
$easter = DateTime::easter(2016); $pentecost = $easter->copy()->addDays(49);
结果
Sun, 27 Mar 2016 00:00:00 +0100
Sun, 15 May 2016 00:00:00 +0200
formatLocalized 方法
此方法根据地区设置返回字符串表示形式。 https://php.ac.cn/manual/en/function.strftime.php 列出了可以在格式字符串中使用的指定符。
setlocale(LC_TIME, 'de'); $date = DateTime::create('2016-06-05'); print $date->formatLocalized('%A, %#d. %B %Y');
结果
Sonntag, 5. Juni 2016