total sacar numero meses los fechas entre días diferencia dias como calcular años php date

sacar - php semanas entre 2 fechas



sacar los dias entre 2 fechas php (7)

Número de PHP de la semana entre 2 fechas de emisión

A continuación se muestra la solución (solución corregida para una pregunta hecha en el post - https://stackoverflow.com/questions/27560850/php-number-of-week-between-2-dates-issue ) para averiguar el no de semanas entre el intervalo de fechas.

Como la solución siguiente usa la diferencia de fecha, para incluir la fecha de inicio de la semana uno tendrá que usar la función de piso y para la inclusión de la fecha de fin de semana debe usarse el límite máximo, entonces solo devuelve el número correcto de semanas

$strtDate = ''2014-01-01''; $endDate = ''2015-03-17''; $startDateWeekCnt = round(floor( date(''d'',strtotime($strtDate)) / 7)) ; // echo $startDateWeekCnt ."/n"; $endDateWeekCnt = round(ceil( date(''d'',strtotime($endDate)) / 7)) ; //echo $endDateWeekCnt. "/n"; $datediff = strtotime(date(''Y-m'',strtotime($endDate))."-01") - strtotime(date(''Y-m'',strtotime($strtDate))."-01"); $totalnoOfWeek = round(floor($datediff/(60*60*24)) / 7) + $endDateWeekCnt - $startDateWeekCnt ; echo $totalnoOfWeek ."/n";

hola cómo encontrar no de semanas y cada lunes fecha entre 2 fechas. por ejemplo, 10-07-2009 hasta hoy.

Nota : considere el año bisiesto y otras restricciones relacionadas con la fecha también.


Aquí hay una solución alternativa usando DateTime: -

function datediffInWeeks($date1, $date2) { if($date1 > $date2) return datediffInWeeks($date2, $date1); $first = DateTime::createFromFormat(''m/d/Y'', $date1); $second = DateTime::createFromFormat(''m/d/Y'', $date2); return floor($first->diff($second)->days/7); } var_dump(datediffInWeeks(''1/2/2013'', ''6/4/2013''));// 21

Verlo funcionando


Este trabajo genial

function weeks_between($datefrom, $dateto) { $datefrom = DateTime::createFromFormat(''d/m/Y H:i:s'',$datefrom); $dateto = DateTime::createFromFormat(''d/m/Y H:i:s'',$dateto); $interval = $datefrom->diff($dateto); $week_total = $interval->format(''%a'')/7; return floor($week_total); } weeks_between("25/02/2000 11:30:00","05/06/2015 11:29:59")


La siguiente función calcula las "semanas habladas" entre dos marcas de tiempo (es decir, lunes es la próxima semana si está en sábado).

function days_between($datefrom,$dateto){ $fromday_start = mktime(0,0,0,date("m",$datefrom),date("d",$datefrom),date("Y",$datefrom)); $diff = $dateto - $datefrom; $days = intval( $diff / 86400 ); // 86400 / day if( ($datefrom - $fromday_start) + ($diff % 86400) > 86400 ) $days++; return $days; } function weeks_between($datefrom, $dateto) { $day_of_week = date("w", $datefrom); $fromweek_start = $datefrom - ($day_of_week * 86400) - ($datefrom % 86400); $diff_days = days_between($datefrom, $dateto); $diff_weeks = intval($diff_days / 7); $seconds_left = ($diff_days % 7) * 86400; if( ($datefrom - $fromweek_start) + $seconds_left > 604800 ) $diff_weeks ++; return $diff_weeks; }


Para consultar el Código Completo Haga clic aquí

Todos los números de la semana entre dos fechas en PHP

getNoOfWeek () devolverá el conjunto de la semana no. con año. Puede cambiar el formato de esta matriz desde week_text_alter ().

function getNoOfWeek($startDate, $endDate){ // convert date in valid format $startDate = date("Y-m-d", strtotime($startDate)); $endDate = date("Y-m-d", strtotime($endDate)); $yearEndDay = 31; $weekArr = array(); $startYear = date("Y", strtotime($startDate)); $endYear = date("Y", strtotime($endDate)); if($startYear != $endYear) { $newStartDate = $startDate; for($i = $startYear; $i <= $endYear; $i++) { if($endYear == $i) { $newEndDate = $endDate; } else { $newEndDate = $i."-12-".$yearEndDay; } $startWeek = date("W", strtotime($newStartDate)); $endWeek = date("W", strtotime($newEndDate)); if($endWeek == 1){ $endWeek = date("W", strtotime($i."-12-".($yearEndDay-7))); } $tempWeekArr = range($startWeek, $endWeek); array_walk($tempWeekArr, "week_text_alter", array(''pre'' => ''Week '', ''post'' => " ''". substr($i, 2, 2) )); $weekArr = array_merge($weekArr, $tempWeekArr); $newStartDate = date("Y-m-d", strtotime($newEndDate . "+1 days")); } } else { $startWeek = date("W", strtotime($startDate)); $endWeek = date("W", strtotime($endDate)); $endWeekMonth = date("m", strtotime($endDate)); if($endWeek == 1 && $endWeekMonth == 12){ $endWeek = date("W", strtotime($endYear."-12-".($yearEndDay-7))); } $weekArr = range($startWeek, $endWeek); array_walk($weekArr, "week_text_alter", array(''pre'' => ''Week '', ''post'' => " ''". substr($startYear, 2, 2))); } $weekArr = array_fill_keys($weekArr, 0); return $weekArr; } function week_text_alter(&$item1, $key, $prefix) { $item1 = $prefix[''pre'']. $item1 . $prefix[''post'']; } Output 1 - $weekArr = getNoOfWeek(''2014-01-01'', ''2014-02-10''); Array ( [Week 1 ''14] => 0 [Week 2 ''14] => 0 [Week 3 ''14] => 0 [Week 4 ''14] => 0 [Week 5 ''14] => 0 [Week 6 ''14] => 0 [Week 7 ''14] => 0 ) Output 2 - $weekArr = getNoOfWeek(''2013-12-01'', ''2014-02-10''); Array ( [Week 48 ''13] => 0 [Week 49 ''13] => 0 [Week 50 ''13] => 0 [Week 51 ''13] => 0 [Week 52 ''13] => 0 [Week 1 ''14] => 0 [Week 2 ''14] => 0 [Week 3 ''14] => 0 [Week 4 ''14] => 0 [Week 5 ''14] => 0 [Week 6 ''14] => 0 [Week 7 ''14] => 0 )

Espero que esto te ayudará.


$diff = strtotime($dateto, 0) - strtotime($datefrom, 0); echo floor($diff / 604800);


echo datediff(''ww'', ''9 July 2003'', ''4 March 2004'', false);

Encuentre la función en el sitio a continuación: http://www.addedbytes.com/code/php-datediff-function/

ACTUALIZAR

El enlace ahora está roto (septiembre de 2017), por lo que funciona a continuación extraído de webarchive:

<?php /** * @param $interval * @param $datefrom * @param $dateto * @param bool $using_timestamps * @return false|float|int|string */ function datediff($interval, $datefrom, $dateto, $using_timestamps = false) { /* $interval can be: yyyy - Number of full years q - Number of full quarters m - Number of full months y - Difference between day numbers (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".) d - Number of full days w - Number of full weekdays ww - Number of full weeks h - Number of full hours n - Number of full minutes s - Number of full seconds (default) */ if (!$using_timestamps) { $datefrom = strtotime($datefrom, 0); $dateto = strtotime($dateto, 0); } $difference = $dateto - $datefrom; // Difference in seconds $months_difference = 0; switch ($interval) { case ''yyyy'': // Number of full years $years_difference = floor($difference / 31536000); if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) { $years_difference--; } if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) { $years_difference++; } $datediff = $years_difference; break; case "q": // Number of full quarters $quarters_difference = floor($difference / 8035200); while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) { $months_difference++; } $quarters_difference--; $datediff = $quarters_difference; break; case "m": // Number of full months $months_difference = floor($difference / 2678400); while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) { $months_difference++; } $months_difference--; $datediff = $months_difference; break; case ''y'': // Difference between day numbers $datediff = date("z", $dateto) - date("z", $datefrom); break; case "d": // Number of full days $datediff = floor($difference / 86400); break; case "w": // Number of full weekdays $days_difference = floor($difference / 86400); $weeks_difference = floor($days_difference / 7); // Complete weeks $first_day = date("w", $datefrom); $days_remainder = floor($days_difference % 7); $odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder? if ($odd_days > 7) { // Sunday $days_remainder--; } if ($odd_days > 6) { // Saturday $days_remainder--; } $datediff = ($weeks_difference * 5) + $days_remainder; break; case "ww": // Number of full weeks $datediff = floor($difference / 604800); break; case "h": // Number of full hours $datediff = floor($difference / 3600); break; case "n": // Number of full minutes $datediff = floor($difference / 60); break; default: // Number of full seconds (default) $datediff = $difference; break; } return $datediff; }