Portál AbcLinuxu, 11. května 2025 06:58

Dotaz: funkce pro zjištění dnů v týdnu.

18.8.2011 21:05 marsme
funkce pro zjištění dnů v týdnu.
Přečteno: 295×
Odpovědět | Admin
Potřeboval bych nějakou funkcí zjistit které dny jsou v daném týdnu. Jsem schopný z dat zjistit jestli je to 1..6 týden v měsící. Znám měsíc a rok.

Potřebuji funkci do které zadám číslo týdne (1..6),měsíc a rok a potřebuji zjistit např. že v 1 týdnu v 6 měsíci 2011 jsou dny 1.6 - 5.6

Zkoušel jsem to napsat pomocí funkcí pro práci s datem ale nepovedlo se mi to. Pls napadá Vás někoho jak to napsat?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.8.2011 21:13 Kit
Rozbalit Rozbalit vše Re: funkce pro zjištění dnů v týdnu.
Odpovědět | | Sbalit | Link | Blokovat | Admin
V kterém jazyku?

Jednoduchý postup by mohl být zjistit den v týdnu pro (tyden*7-6).měsíc.rok. Zbytek do neděle už snadno dopočítáš.
18.8.2011 21:21 marsme
Rozbalit Rozbalit vše Re: funkce pro zjištění dnů v týdnu.
v PHP
18.8.2011 21:33 Kit
Rozbalit Rozbalit vše Re: funkce pro zjištění dnů v týdnu.
A? Zkusil jsi to?
18.8.2011 21:40 marsme
Rozbalit Rozbalit vše Re: funkce pro zjištění dnů v týdnu.
Nedovedu si představit jak to napsat. tyden*7-6 mi nedá dny v týdnu které potřebuju
Řešení 1× (marsme (tazatel))
18.8.2011 22:06 marsme
Rozbalit Rozbalit vše Re: funkce pro zjištění dnů v týdnu.
Vyřešeno.

Výsledek:
function getDaysInWeek($week_number,$first_day_in_month,$year,$month){
    $first_day = ($week_number*7)-6-$first_day_in_month;
	for($x=1;$x<=7;$x++){
		$first_day++;
		$pole[$x] = $first_day;
	}
	return $pole;
}
18.8.2011 22:44 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: funkce pro zjištění dnů v týdnu.
Přes DateTime, trošku ukecaně:
<?php

/**
 * @param $year int
 * @param $month int
 * @param $week_offset - 1 = 1st week of month
 * @param $format string - output format
 * @return array
 */
function getDays($year,$month,$week_offset,$format='Y-m-d D')
{
  $month = (int) $month;
  $date = new DateTime();
  $date->setDate($year, $month, 1);
//debug echo $date->format('Y-m-d  D')."\n";
  $dayOfWeek = (int) $date->format('N');
  $week_offset = (int) $week_offset;
  $week_offset--;
  if($week_offset > 0)
  {
    if($dayOfWeek > 1)//to start of week
    {
      $dayOfWeek--;
      $io = new DateInterval("P${dayOfWeek}D");
      $date->sub($io);
    }
    $io = new DateInterval("P${week_offset}W");
    $date->add($io);
  }
//debug echo $date->format('Y-m-d  D')."\n";
  $io = new DateInterval('P1D');
  $a=Array();
  for($i=(int) $date->format('N');$i<8;$i++)
  {
    if( (int)$date->format('n') != $month)
      break;
    $a[] = $date->format($format);
    $date->add($io);
  }
  return $a;
}

print_r(getDays('2011','6',1));
echo "------------\n";
print_r(getDays('2011','6',2));
echo "------------\n";
print_r(getDays('2011','6',3));
echo "------------\n";
print_r(getDays('2011','6',4));
echo "------------\n";
print_r(getDays('2011','6',5));
echo "------------\n";
print_r(getDays('2011','6',6));
echo "------------\n";
print_r(getDays('2011','6',7));
echo "------------\n";

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.