Get week starting and ending date in PHP
This is how you can get the week starting date or ending date by giving a week number and the year.
<?php
$monday = date('Ymd', strtotime("2013-W01-1"));
$sunday = date('Ymd', strtotime("2013-W01-7"));
?>
<?php
/**
* Get starting date from week number and year
* Monday is first day of week
*
* @param unknown_type $wk_num
* @param unknown_type $yr
* @param unknown_type $first
* @param unknown_type $format
* @return unknown
*/
function week_start_date($week, $year, $format = 'Ymd', $date = FALSE) {
if ($date) {
$week = date("W", strtotime($date));
$year = date("o", strtotime($date));
}
$week = sprintf("%02s", $week);
$desiredMonday = date($format, strtotime("$year-W$week-1"));
return $desiredMonday;
}
$sStartDate = week_start_date($week_number, $year);
$sEndDate = date('Y-m-d', strtotime('+6 days', strtotime($sStartDate)));
?>Reference : http://www.phpbuilder.com/board/showthread.php?t=10222903
Going from date or timestamp to get the week start and end date this call might be a better way to go.
<?php
$time = strtotime("2011-01-01");
//or
$time = strtotime("2010-12-31");
$first_day_of_week = date('Y-m-d', strtotime('Last Monday', $time));
$last_day_of_week = date('Y-m-d', strtotime('Next Sunday', $time));
//Will give the same result
//2010-12-27
//2011-01-02
?><?php
/**
* Get week and its start and ending date
*
* @param unknown_type $date
*/
function week_start_end_by_date($date, $format = 'Ymd') {
//Is $date timestamp or date?
if (is_numeric($date) AND strlen($date) == 10) {
$time = $date;
}else{
$time = strtotime($date);
}
$week['week'] = date('W', $time);
$week['year'] = date('o', $time);
$week['year_week'] = date('oW', $time);
$first_day_of_week_timestamp = strtotime($week['year']."W".str_pad($week['week'],2,"0",STR_PAD_LEFT));
$week['first_day_of_week'] = date($format, $first_day_of_week_timestamp);
$week['first_day_of_week_timestamp'] = $first_day_of_week_timestamp;
$last_day_of_week_timestamp = strtotime($week['first_day_of_week']. " +6 days");
$week['last_day_of_week'] = date($format, $last_day_of_week_timestamp);
$week['last_day_of_week_timestamp'] = $last_day_of_week_timestamp;
return $week;
}
?>