smilesrg / dateperiod
简化获取星期、月份、年份的第一天和最后一天。
dev-master
2015-03-30 12:52 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 4.5.*
This package is not auto-updated.
Last update: 2024-09-28 18:15:52 UTC
README
简化获取星期、月份、年份的第一天和最后一天。
## 安装 此扩展程序的推荐安装方法是使用composer。
运行以下命令之一:
php composer.phar require --prefer-dist smilesrg/dateperiod "*"
或者
"smilesrg/dateperiod": "*"
将以下内容添加到您的composer.json
文件的require部分:
## 使用
有以下类可用
- YearPeriod
- MonthPeriod
- WeekPeriod
- DayPeriod
DayPeriod用于获取一天的开始和结束。您可以选择不传递DateTime对象给构造函数,那么将使用当前日期。
<?php require 'vendor/autoload.php'; use DatePeriod\YearPeriod; use DatePeriod\MonthPeriod; use DatePeriod\WeekPeriod; use DatePeriod\DatePeriod; use DatePeriod\DayPeriod; // Example of retrieving start and end dates of the current year $yearPeriod = new YearPeriod(); echo $yearPeriod->getStartDate()->format("Y-m-d") . PHP_EOL; // prints the first day of the current year echo $yearPeriod->getEndDate()->format("Y-m-d") . PHP_EOL; // prints the last day of the current year // Example of getting first and last days of month for the given date $date = new \DateTime('06-06-2000'); $monthPeriod = new MonthPeriod($date); // Dates are immutable. You can't chante start and end dates inside of DatePeriod classes. $startDate = $monthPeriod->getStartDate(); $startDate->modify('+5 days'); echo $startDate->format("Y-m-d") . PHP_EOL; // 2000-06-06 $startDate = $monthPeriod->getEndDate(); $startDate->modify('+10 days'); echo $startDate->format("Y-m-d") . PHP_EOL; // 2000-07-10 // But start date won't chante inside the DatePeriod objects echo $monthPeriod->getStartDate()->format("Y-m-d") . PHP_EOL; // 2000-06-01 echo $monthPeriod->getEndDate()->format("Y-m-d") . PHP_EOL; // 2000-06-30 // Example of getting first and last days of week for the given date // By default, the start date time is set to 00:00:00 and end date time is set to 23:59:59 $date = new \DateTime('02-03-2015'); $weekPeriod = new WeekPeriod($date); echo $weekPeriod->getStartDate()->format("Y-m-d H:i:s") . PHP_EOL; // 2015-03-02 00:00:00 echo $weekPeriod->getEndDate()->format("Y-m-d H:i:s") . PHP_EOL; // 2015-03-08 23:59:59 // Example retrieving first and last days of week with preserving time $date = new \DateTime('02-03-2015 14:30:00'); $weekPeriod = new WeekPeriod($date, $preserveTime = true); echo $weekPeriod->getStartDate()->format("Y-m-d H:i:s") . PHP_EOL; // 2015-03-02 14:30:00 echo $weekPeriod->getEndDate()->format("Y-m-d H:i:s") . PHP_EOL; // 2015-03-08 14:30:00 // Example getting start and end of the day $date = new \DateTime('02-03-2015'); $weekPeriod = new DayPeriod($date); echo $weekPeriod->getStartDate()->format("Y-m-d H:i:s") . PHP_EOL; // 2015-03-02 00:00:00 echo $weekPeriod->getEndDate()->format("Y-m-d H:i:s") . PHP_EOL; // 2015-03-08 23:59:59 // Example of creating custom date period $startDate = new \DateTime('06-06-2000'); $endDate = new \DateTime('06-07-2001'); $datePeriod = new DatePeriod($startDate, $endDate);
您可以将DatePeriodInterface对象传递给函数或方法,而不是分别传递开始和结束日期。例如function getRevenueReport(DatePeriodInterface $period)
而不是function getRevenueReport($startDate, $endDate)