PHP 获取两个时间之间 所有天数 月数
super
2019-01-22 17:04
4667
2020-06-17
// 周一开始时间戳 与周日结束时间戳
$today = strtotime(date('Y-m-d'));
$weekday = date('w') == 0 ? 7 : date('w');
$start = $today - ($weekday - 1) * 3600 * 24;
$end = $start + 7 * 24 * 3600 - 1;
原文
/**
* 获取两个日期之间所有周
* 这个有bug,开始日期若为周日,周日会跟后面周 连到一块
* @param string $start_time 2018-01-01
* @param string $end_time 2019-01-01
* @return array
*/
function prWeeks($start, $end)
{
$dt_start = strtotime($start);
$firstWeekMonday = strtotime('this week Monday', $dt_start);
$dt_end = strtotime($end);
$days = [];
array_push($days, $dt_start);
while ($firstWeekMonday < $dt_end) {
$firstWeekMonday += 604800;
array_push($days, $firstWeekMonday);// 7*24*60*60
}
return $days;
}
/**
* 获取两个日期之间所有月份
* @param string $start_time 2018-01-01
* @param string $end_time 2019-01-01
* @return array
*/
function prMonths($start_time, $end_time)
{
$time1 = strtotime($start_time);
$time2 = strtotime($end_time);
$monthArray = [];
$monthArray[] = date('Y-m', $time1); // 当前月;
while(($time1 = strtotime('+1 month', $time1)) <= $time2) {
$monthArray[] = date('Y-m',$time1);
}
return $monthArray;
}
// 获取本月开始时间戳
mktime(0, 0, 0, date('m'), 1, date('Y'));
// 获取本月结束时间戳
mktime(0, 0, 0, date('m') + 1, 1, date('Y')) - 1;
// 获取今天开始时间戳
mktime(0, 0, 0, date('m'), date('d'), date('Y'));
// 获取今天结束时间戳
mktime(23, 59, 59, date('m'), date('d'), date('Y'));
// 获取今天是周几
$whatDay = date('w', time());// == 0 是周末 其他1=一 2=二...依次类推
0 条讨论