PHP 按年份获取周数和日期
PHP get week numbers and dates by year
我想知道如何获取所有周数以及一周开始和结束的日期。我对代码一无所知,所以我无法向您展示任何东西。我需要得到类似这个网站的东西:http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php
试试这个:
$week = 1;
$year = 2014;
while($week <= 52)
{
$time = strtotime("26 December $year", time());
$day = date('w', $time);
$time += ((7*$week)+1-$day)*24*3600;
$start = date('Y-n-j', $time);
$time += 6*24*3600;
$end = date('Y-n-j', $time);
echo "weekno : ".$week." start date : ".$start." End date : ".$end."<br/>";
$week++;
$year++;
}
我建议如下,只需将年份更改为您喜欢的任何年份即可。
<?php
$year = 2014;
$weeks = getIsoWeeksInYear($year);
for($x=1; $x<=$weeks; $x++){
$dates = getStartAndEndDate($x, $year);
echo $x . " - " . $dates['week_start'] . ' - ' . $dates['week_end'] . "<br>";
}
function getIsoWeeksInYear($year) {
$date = new DateTime;
$date->setISODate($year, 53);
return ($date->format("W") === "53" ? 53 : 52);
}
function getStartAndEndDate($week, $year) {
$dto = new DateTime();
$ret['week_start'] = $dto->setISODate($year, $week)->format('Y-m-d');
$ret['week_end'] = $dto->modify('+6 days')->format('Y-m-d');
return $ret;
}
?>
我想知道如何获取所有周数以及一周开始和结束的日期。我对代码一无所知,所以我无法向您展示任何东西。我需要得到类似这个网站的东西:http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php
试试这个:
$week = 1;
$year = 2014;
while($week <= 52)
{
$time = strtotime("26 December $year", time());
$day = date('w', $time);
$time += ((7*$week)+1-$day)*24*3600;
$start = date('Y-n-j', $time);
$time += 6*24*3600;
$end = date('Y-n-j', $time);
echo "weekno : ".$week." start date : ".$start." End date : ".$end."<br/>";
$week++;
$year++;
}
我建议如下,只需将年份更改为您喜欢的任何年份即可。
<?php
$year = 2014;
$weeks = getIsoWeeksInYear($year);
for($x=1; $x<=$weeks; $x++){
$dates = getStartAndEndDate($x, $year);
echo $x . " - " . $dates['week_start'] . ' - ' . $dates['week_end'] . "<br>";
}
function getIsoWeeksInYear($year) {
$date = new DateTime;
$date->setISODate($year, 53);
return ($date->format("W") === "53" ? 53 : 52);
}
function getStartAndEndDate($week, $year) {
$dto = new DateTime();
$ret['week_start'] = $dto->setISODate($year, $week)->format('Y-m-d');
$ret['week_end'] = $dto->modify('+6 days')->format('Y-m-d');
return $ret;
}
?>