我从MySQL数据库中提取了两条信息,即年份(2009年,2010年,等)和周(1-52).我需要将其转换为日期开始和日期结束..
例如:
Year=2010, Week=1 would be (Friday, Jan 1st, 2010) - (Sunday, Jan 3rd, 2010)
Year=2010, Week=33 would be (Monday, Aug 16th, 2010) - (Sunday, Aug 22nd, 2010)
Year=2010, Week=34 would be (Monday, Aug 23rd, 2010) - (Sunday, Aug 29th, 2010)
Run Code Online (Sandbox Code Playgroud)
我将如何在PHP中执行此操作?
Nav*_*eed 36
$year = "2010"; // Year 2010
$week = "01"; // Week 1
$date1 = date( "l, M jS, Y", strtotime($year."W".$week."1") ); // First day of week
$date2 = date( "l, M jS, Y", strtotime($year."W".$week."7") ); // Last day of week
echo $date1 . " - " . $date2;
Run Code Online (Sandbox Code Playgroud)
如果周数小于10,则在数字前附加0.1将无法正常工作,应为01.
vas*_*ite 10
由于发布了这个问题和接受的答案,DateTime课程使这更容易: -
function daysInWeek($weekNum)
{
$result = array();
$datetime = new DateTime();
$datetime->setISODate((int)$datetime->format('o'), $weekNum, 1);
$interval = new DateInterval('P1D');
$week = new DatePeriod($datetime, $interval, 6);
foreach($week as $day){
$result[] = $day->format('d/m/Y');
}
return $result;
}
var_dump(daysInWeek(24));
Run Code Online (Sandbox Code Playgroud)
输出: -
array (size=7)
0 => string '10/06/2013' (length=10)
1 => string '11/06/2013' (length=10)
2 => string '12/06/2013' (length=10)
3 => string '13/06/2013' (length=10)
4 => string '14/06/2013' (length=10)
5 => string '15/06/2013' (length=10)
6 => string '16/06/2013' (length=10)
Run Code Online (Sandbox Code Playgroud)
这具有照顾闰年等的额外优势.