查找一周的第一天和最后一天(或月,季度或年)

时间:2013-01-19 15:38:03

标签: php mysql

  

可能重复:
  Grab current first and last day in week in php

我想要获得某一天的一周,一个月,一个季度和一年的第一天和最后一天。

例如,对于2013-01-16这一天,第一天和最后一天将是:

  • 周 - 这将是2013-01-13和2013-01-19(假设周日至周六)
  • 月 - 将是2013-01-01和2013-01-31
  • 季度 - 将是2013-01-01和2013-03-31
  • 年 - 这将是2013-01-01和2013-12-31

我的目的是将它们包含在WHERE myDate BETWEEN 2013-01-13 AND 2013-01-19

标准的MYSQL功能解决方案(但不是存储过程等)或PHP解决方案都是可以接受的。谢谢


给定季度的第一天和最后一天的解决方案。

$q=ceil($date->format("n")/3);
$months_start=array('January','April','July','October');
$months_end=array('March','June','September','December');
$m_start=$months_start[$q-1];
$m_end=$months_end[$q-1];
$modifier='first day of '.$m_start.' '.$date->format('Y');
$date->modify($modifier);
echo $modifier.': '.$date->format('Y-m-d').'<br>';
$modifier='last day of '.$m_end.' '.$date->format('Y');
$date->modify($modifier);
echo $modifier.': '.$date->format('Y-m-d').'<br>';

1 个答案:

答案 0 :(得分:8)

您可以使用strtotime

$date = strtotime('2013-01-16');

// First/last day of week 
$first = strtotime('last Sunday');
$last = strtotime('next Saturday');

或PHP的原生DateTime功能:

$date = new DateTime('2013-01-16');

// First/last day of month
$first = $date->modify('first day of this month');
$last = $date->modify('last day of this month');

获得一年的第一天/最后一天可能会有点棘手:

// Get date
$date = new DateTime('2013-01-16');

// Format to get date
$year = $date->format('Y');

// Get first day of Jan and last day of Dec
$first = $date->modify("first day of January $year");
$last = $date->modify("last day of December $year");