Skip to content

Instantly share code, notes, and snippets.

@fetus-hina
Created November 23, 2012 10:44
Show Gist options
  • Save fetus-hina/4135068 to your computer and use it in GitHub Desktop.
Save fetus-hina/4135068 to your computer and use it in GitHub Desktop.
Calculate date by ISO-Week-Number (and wday)
<?php
function weekNumberToDate($year, $week, $wday = 1) {
// http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
$correction = (int)gmdate('w', gmmktime(0, 0, 0, 1, 4, (int)$year)) + 3;
$yday = (int)$week * 7 + (int)$wday - $correction;
$time = gmmktime(0, 0, 0, 1, $yday, (int)$year);
return array((int)gmdate('Y', $time), (int)gmdate('n', $time), (int)gmdate('j', $time));
}
var_dump(weekNumberToDate(2008, 39, 6));
@ROBERT-MCDOWELL
Copy link

ROBERT-MCDOWELL commented Apr 28, 2017

function weekToTime($year,$week){
        $timeYearStart = mktime(0,0,0,1,1,$year);
        $timeFirstWeekStart = strtotime("next monday",mktime(0,0,0,1,1,$year));
        $timeDayDiff = $timeFirstWeekStart - $timeYearStart;
        $weekNumToTime = $timeYearStart + (int)(((($week-1)*7)*86400)+$timeDayDiff) ;
        return $weekNumToTime;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment