smilesrg/dateperiod

简化获取星期、月份、年份的第一天和最后一天。

dev-master 2015-03-30 12:52 UTC

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)