PHP-通过给出2个日期每周显示天数
我想按周数显示两个日期之间的日期,如下例所示。这在PHP中可能吗 如果日期为2010-12-01至2010-12-19,则显示如下PHP-通过给出2个日期每周显示天数,php,Php,我想按周数显示两个日期之间的日期,如下例所示。这在PHP中可能吗 如果日期为2010-12-01至2010-12-19,则显示如下 week-1 2010-12-01 2010-12-02 2010-12-03 2010-12-04 2010-12-05 2010-12-06 2010-12-07 week-2 2010-12-08 2010-12-09 2010-12-10 2010-12-11 2010-12-1
week-1
2010-12-01
2010-12-02
2010-12-03
2010-12-04
2010-12-05
2010-12-06
2010-12-07
week-2
2010-12-08
2010-12-09
2010-12-10
2010-12-11
2010-12-12
2010-12-13
2010-12-14
week-3
2010-12-15
2010-12-16
2010-12-17
2010-12-18
2010-12-19
and so on...
我使用mysql。它有startdate end enddate字段。
先谢谢你
我可以得到那些给出两个日期的人的周数,并使用
datediff('ww', '2010-12-01', '2010-12-19', false); I found on the internet.
我可以显示两个日期之间的日期,如下所示。但我很难按周对它们进行分组
$sdate = "2010-12-01";
$edate = "2010-12-19";
$days = getDaysInBetween($sdate, $edate);
foreach ($days as $val)
{
echo $val;
}
function getDaysInBetween($start, $end) {
// Vars
$day = 86400; // Day in seconds
$format = 'Y-m-d'; // Output format (see PHP date funciton)
$sTime = strtotime($start); // Start as time
$eTime = strtotime($end); // End as time
$numDays = round(($eTime - $sTime) / $day) + 1;
$days = array();
// Get days
for ($d = 0; $d < $numDays; $d++) {
$days[] = date($format, ($sTime + ($d * $day)));
}
// Return days
return $days;
}
$sdate=“2010-12-01”;
$edate=“2010-12-19”;
$days=getDaysInBetween($sdate,$edate);
foreach(天数为$val)
{
echo$val;
}
函数getDaysInBetween($start,$end){
//瓦尔斯
$day=86400;//以秒为单位的天
$format='Y-m-d';//输出格式(请参见PHP日期函数)
$sTime=strotime($start);//按时间开始
$eTime=strottime($end);//以时间结束
$numDays=round($eTime-$sTime)/$day)+1;
$days=array();
//得到天
对于($d=0;$d<$numDays;$d++){
$days[]=日期($format,($sTime+($d*$day));
}
//回归日
返回$days;
}
您肯定需要这个:。写一个forloop,每次递增一天。您还需要和函数作为。事实上,询问日期('W',yourDateHere)
是个好主意
您将得到类似这样的结果(伪代码)
$startDate;
$endDate;
$nrOfDays=DateDiffindDays($endDate,$startDate);
$currentWeek=日期($W',$startDate);
对于($i=0;$i<$nrofday;$i++)
{
$newDay=date('+$i day',$startDate);//获取递增的日期
$newWeek=date('W',$newDay);//获取新一天的星期
if($newWeek!=$currentWeek)//检查是否必须打印新的一周,或者是否仍在当前
打印$newWeek;
打印$newDay;//打印日期
}
希望这有帮助。祝你好运。你肯定需要这个:。写一个forloop,每次递增一天。您还需要和函数作为。事实上,询问
日期('W',yourDateHere)
是个好主意
您将得到类似这样的结果(伪代码)
$startDate;
$endDate;
$nrOfDays=DateDiffindDays($endDate,$startDate);
$currentWeek=日期($W',$startDate);
对于($i=0;$i<$nrofday;$i++)
{
$newDay=date('+$i day',$startDate);//获取递增的日期
$newWeek=date('W',$newDay);//获取新一天的星期
if($newWeek!=$currentWeek)//检查是否必须打印新的一周,或者是否仍在当前
打印$newWeek;
打印$newDay;//打印日期
}
希望这有帮助。祝你好运。足够完成工作的工具:
- ('2010-11-23')-从日期获取时间戳
- (“+1天”,$someTimestamp)-获取第二天
- ('W',$someTimestamp)-获取周数(如果您想按ISO周数分组)
- ($orderedListOfSuccessiveDates,7)-分为七天一组(如果不想按ISO周数分组)
警告:永远不要在时间戳上增加86400天!当夏令时,这是打破一切的最简单方法。使用strotime函数或类。足够完成此工作的工具:
- ('2010-11-23')-从日期获取时间戳
- (“+1天”,$someTimestamp)-获取第二天
- ('W',$someTimestamp)-获取周数(如果您想按ISO周数分组)
- ($orderedListOfSuccessiveDates,7)-分为七天一组(如果不想按ISO周数分组)
$current_date = strtotime('2010-12-01');
$end_date = strtotime('2010-12-19');
$day_count = 0;
$current_week = null;
do {
if ((int)($day_count / 7) + 1 != $current_week) {
$current_week = (int)($day_count / 7) + 1;
echo 'week-'.$current_week.'<br />';
}
echo date('Y-m-d', $current_date).'<br />';
$current_date = strtotime('+1 day', $current_date);
$day_count ++;
} while ($current_date <= $end_date);
$current_date=strotime('2010-12-01');
$end_date=strottime('2010-12-19');
$day_count=0;
$current_week=null;
做{
如果((int)($day\u count/7)+1!=$current\u week){
$current_week=(int)($day_count/7)+1;
回显“周-”.$current_week.
;
}
回音日期('Y-m-d',$当前日期)。';
$current_date=strottime(“+1天”,$current_date);
$day_count++;
}而($current_date新答案
$current_date = strtotime('2010-12-01');
$end_date = strtotime('2010-12-19');
$day_count = 0;
$current_week = null;
do {
if ((int)($day_count / 7) + 1 != $current_week) {
$current_week = (int)($day_count / 7) + 1;
echo 'week-'.$current_week.'<br />';
}
echo date('Y-m-d', $current_date).'<br />';
$current_date = strtotime('+1 day', $current_date);
$day_count ++;
} while ($current_date <= $end_date);
$current_date=strotime('2010-12-01');
$end_date=strottime('2010-12-19');
$day_count=0;
$current_week=null;
做{
如果((int)($day\u count/7)+1!=$current\u week){
$current_week=(int)($day_count/7)+1;
回显“周-”.$current_week.
;
}
回音日期('Y-m-d',$当前日期)。';
$current_date=strottime(“+1天”,$current_date);
$day_count++;
}while($current_date在这里。虽然这是从星期天开始的几周(如果需要的话,可以改为星期一)。如果日期不在同一年,这是不起作用的。但这应该很容易解决。如果不是同一年,那么
$start_date = mktime(0, 0, 0, 12, 01, 2010);
$start_date_week_number = (int) date("W", $start_date);
$end_date = mktime(0, 0, 0, 12, 19, 2010);
$end_date_week_number = (int) date("W", $end_date);
$n = $start_date_week_number;
$w = 1;
$date = $start_date;
while($n <= $end_date_week_number) {
echo("<strong>Week " . $w . "</strong><br />");
$s = 0;
$e = 6;
if($n == $start_date_week_number) $s = (int) date("w", $start_date);
elseif($n == $end_date_week_number) $e = (int) date("w", $end_date);
while($s <= $e) {
echo(date("j-m-y", $date) . "<br />");
$c_date = getdate($date);
$date = mktime($c_date['hours'], $c_date['minutes'], $c_date['seconds'], $c_date['mon'], $c_date['mday'] + 1, $c_date['year']);
$s++;
}
$n++; $w++;
}
$start_date=mktime(0,0,0,12,01,2010);
$start\u date\u week\u number=(int)date(“W”,即$start\u date);
$end_date=mktime(0,0,0,12,19,2010);
$end_date_week_number=(int)date(“W”,即$end_date);
$n=$start\u date\u week\u number;
$w=1;
$date=$start\u date;
虽然($n给你。虽然这是从星期天开始的几周(如果需要的话,可以改为星期一)。如果日期不在同一年,这是不起作用的。但是解决这个问题应该很容易。如果不是同一年的话
$start_date = mktime(0, 0, 0, 12, 01, 2010);
$start_date_week_number = (int) date("W", $start_date);
$end_date = mktime(0, 0, 0, 12, 19, 2010);
$end_date_week_number = (int) date("W", $end_date);
$n = $start_date_week_number;
$w = 1;
$date = $start_date;
while($n <= $end_date_week_number) {
echo("<strong>Week " . $w . "</strong><br />");
$s = 0;
$e = 6;
if($n == $start_date_week_number) $s = (int) date("w", $start_date);
elseif($n == $end_date_week_number) $e = (int) date("w", $end_date);
while($s <= $e) {
echo(date("j-m-y", $date) . "<br />");
$c_date = getdate($date);
$date = mktime($c_date['hours'], $c_date['minutes'], $c_date['seconds'], $c_date['mon'], $c_date['mday'] + 1, $c_date['year']);
$s++;
}
$n++; $w++;
}
$start_date=mktime(0,0,0,12,01,2010);
$start\u date\u week\u number=(int)date(“W”,即$start\u date);
$end_date=mktime(0,0,0,12,19,2010);
$end_date_week_number=(int)date(“W”,即$end_date);
$n=$start\u date\u week\u number;
$w=1;
$date=$start\u date;
而($n$startDate=新日期时间($2010-01-01));
$endDate=新日期时间('2010-01-14');
$weeksDays=getWeeksDaysBetween($startDate,$endDate);
foreach($weeksDays作为$week=>$days)
{
echo“周$Week