izracunavanje radnih dana u mesecu, kako izracunati koliko mesec ima TACNO radnih dana |
Dobrodošli, goste ( Prijava | Registracija )
![]() ![]() |
izracunavanje radnih dana u mesecu, kako izracunati koliko mesec ima TACNO radnih dana |
Aug 29 2007, 13:35
Poruka
#1
|
|
|
kako mogu izracunam TACAN podatak koliko ima radinih dana u svakom mesecu.
primer: radna nedelja traje 5 dana. avgust ima 31 dan a 23 radna dana. jul ima takodje 31 dan a 22 radna. kako mogu da racunam radne dane? potrebno mi je za svaki mesec za sledecih, recimo 5 godina. svaka ideja mi je dobro dosla hvala |
|
|
|
|
Aug 29 2007, 19:48
Poruka
#2
|
|
|
moglo bi se lako napraviti da nije svake godine za svaki mesec razlicito.
kod date() funckije u PHP-u imas kod ispisa da ti ispisuje i ime dana. napravis skript koji ti pici kroz ceo mesec date godine, recimo jun 2008-e, pa kad nije subota ili nedelja onda $promenljiva + 1, a ako jeste onda nista. vidis, dade mi dobru ideju za zanimaciju |
|
|
|
|
Aug 29 2007, 20:08
Poruka
#3
|
|
|
Grupa: Članovi 1 Poruke: 2,670 Datum reg.: 5-February 06 Lokacija: nozomu-tokyo Član broj: 3,250 |
uzmi cele nedelje (broj dana / 7) * 5 + radni dani ostatka (onaj deo koji ti ostane van celih nedelja pa vidis koji su tu radni dani)
|
|
|
|
Aug 29 2007, 20:47
Poruka
#4
|
|
|
vidju:
CODE <?php $od_godine = 2007; // od koje godine da racuna $do_godine = 2011; // do koje godine da racuna for($od_godine = $od_godine;$od_godine<=$do_godine;$od_godine++){ // glavna for petlja, petlja za godine $od_meseca = 1; // od kog meseca u godini da racuna $do_meseca = 12; // do kog meseca u godini da racuna $prestupna = date(L,mktime(0,0,0,1,1,$od_godine)); // proverava da li je data godina prestupna, 'L' je za to for($od_meseca = $od_meseca;$od_meseca<=$do_meseca;$od_meseca++){ // for petlja za mesece $broj_radnih_dana = 0; // za trenutni mesec nuliramo broj radnih dana // sledeca if...elseif...else... petlja gleda koji je mesec i na osnovu toga odlucuje koliko ima dana u mesecu if($od_meseca == 1 or $od_meseca == 3 or $od_meseca == 5 or $od_meseca == 7 or $od_meseca == 8 or $od_meseca == 10 or $od_meseca == 12){ // ovo je za mesece koji imaju 31 dan $broj_dana_u_mesecu = 31; } elseif ($od_meseca == 4 or $od_meseca == 6 or $od_meseca == 9 or $od_meseca == 11){ // ovo je za mesece koji imaju 30 dana $broj_dana_u_mesecu = 30; } elseif ($prestupna == 1){ // ako je prestupna godina $broj_dana_u_mesecu = 29; } else { // ako nije prestupna godina $broj_dana_u_mesecu = 28; } $dan_u_mesecu = 1; // pocetna vrednost za dan u mesecu, svaki mesec krece od prvog for($dan_u_mesecu=1;$dan_u_mesecu<=$broj_dana_u_mesecu;$dan_u_mesecu++){ // for petlja za dane u mesecu $date_temp = mktime(0,0,0,$od_meseca,$dan_u_mesecu,$od_godine); // pravi timestamp $dan = date(l,$date_temp); // iz timestamp-a pravi datum, samo ime dana u mesecu (Monday, Tuesday...) $godina = date(Y,$date_temp); // iz timestamp-a pravi datum, samo godina $mesec = date(F,$date_temp); // iz timestamp-a pravi datum, samo ime meseca if($dan != 'Sunday' and $dan != 'Saturday'){ // ovde proverava da li je radni dan ili vikend, ako nije ni suboti ni nedelja, broj radnih dana povecava za 1 $broj_radnih_dana = $broj_radnih_dana + 1; } } // za svaki mesec svake godine ispisuje koliko ima radnih dana echo "U $godina godini, $mesec mesec ima $broj_radnih_dana radna dana<br />"; } } ?> snimi pod koji god fajlom i samo pokreni jedino ne racuna za praznike. ako ti treba i za praznike, nadji mi negde koji je praznik kada, ubacicu i to. |
|
|
|
|
Aug 29 2007, 20:56
Poruka
#5
|
|
|
kul stvarno.. super je ovo, svidja mi se.. resio sam problem danas, ali cu mozda koristiti ovaj, videcu
sto se tice resenja problema, nasao sam funkciju na netu. ova racuna i praznike.. pa kome treba, izvolte.. CODE <?
function date_difference($start_date, $end_date, $workdays_only = false, $skip_holidays = false){ $start_date = strtotime($start_date); $end_date = strtotime($end_date); $seconds_in_a_day = 86400; $sunday_val = "0"; $saturday_val = "6"; $workday_counter = 0; $holiday_array = array(); $ptr_year = intval(date("Y", $start_date)); $holiday_array[$ptr_year] = getHolidays(date("Y", $start_date)); for($day_val = $start_date; $day_val <= $end_date; $day_val+=$seconds_in_a_day){ $pointer_day = date("w", $day_val); if($workdays_only == true){ if(($pointer_day != $sunday_val) AND ($pointer_day != $saturday_val)){ if($skip_holidays == true){ if(intval(date("Y", $day_val))!=$ptr_year){ $ptr_year = intval(date("Y", $day_val)); $holiday_array[$ptr_year] = getHolidays(date("Y", $day_val)); } if(!in_array($day_val, $holiday_array[date("Y", $day_val)])){ $workday_counter++; } }else{ $workday_counter++; } } }else{ if($skip_holidays == true){ if(intval(date("Y", $day_val))!=$ptr_year){ $ptr_year = intval(date("Y", $day_val)); $holiday_array[$ptr_year] = getHolidays(date("Y", $day_val)); } if(!in_array($day_val, $holiday_array[date("Y", $day_val)])){ $workday_counter++; } }else{ $workday_counter++; } } } return $workday_counter; } /*-------------------------------------------------------------- The following code is a modified version of heymeadows' zend script submitted on 11/06/2001 CHANGE LOG 2004-07-28 - removed date category numbers 2004-07-28 - renamed function GetNextHoliday to getHolidays 2004-07-28 - moved holiday class outside function 2004-07-28 - modified structure & return value of getHolidays function 2004-07-28 - added memorial_day function to return the timestamp of memorial day of the given year --------------------------------------------------------------*/ function GetTimeStamp($MySqlDate){ /* Take a date in yyyy-mm-dd format and return it to the user in a PHP timestamp Robin 06/10/1999 */ $date_array = explode("-",$MySqlDate); // split the array $var_year = $date_array[0]; $var_month = $date_array[1]; $var_day = $date_array[2]; $var_timestamp = mktime(0,0,0,$var_month,$var_day,$var_year); return($var_timestamp); // return it to the user } // End function GetTimeStamp() function ordinalDay($ord, $day, $month, $year) // ordinalDay returns date of the $ord $day of $month. // For example ordinalDay(3, 'Sun', 5, 2001) returns the // date of the 3rd Sunday of May (ie. Mother's Day). // // Note: $day must be the 3 char abbr. for the day, as // given by date("D"); // // By: heymeadows@yahoo.com { $firstOfMonth = GetTimeStamp("$year-$month-01"); $lastOfMonth = $firstOfMonth + date("t", $firstOfMonth) * 86400; $dayOccurs = 0; for ($i = $firstOfMonth; $i < $lastOfMonth; $i += 86400){ if (date("D", $i) == $day){ $dayOccurs++; if ($dayOccurs == $ord){ $ordDay = $i; } } } return $ordDay; } // End function ordinalDay() function memorial_day($inc_year){ for($date_stepper = intval(date("t", strtotime("$inc_year-05-01"))); $date_stepper >= 1; $date_stepper--){ if(date("l", strtotime("$inc_year-05-$date_stepper"))=="Monday"){ return strtotime("$inc_year-05-$date_stepper"); break; } } } // Looks through a lists of defined holidays and tells you which // one is coming up next. // // By: heymeadows@yahoo.com function getHolidays($inc_year){ //$year = date("Y"); $year = $inc_year; $holidays[] = new holiday("New Year's Day", GetTimeStamp("$year-1-1")); $holidays[] = new holiday("Birthday of Martin Luther King", ordinalDay(3, 'Mon', 1, $year)); $holidays[] = new holiday("Groundhog Day", GetTimeStamp("$year-2-2")); $holidays[] = new holiday("Valentine's Day", GetTimeStamp("$year-2-14")); $holidays[] = new holiday("St. Patrick's Day", GetTimeStamp("$year-3-17")); $holidays[] = new holiday("Easter", easter_date($year)); $holidays[] = new holiday("Memorial Day", memorial_day($year)); $holidays[] = new holiday("Mother's Day", ordinalDay(2, 'Sun', 5, $year)); $holidays[] = new holiday("Father's Day", ordinalDay(3, 'Sun', 6, $year)); $holidays[] = new holiday("Independence Day", GetTimeStamp("$year-7-4")); $holidays[] = new holiday("Labor Day", ordinalDay(1, 'Mon', 9, $year)); $holidays[] = new holiday("Thanksgiving Day", ordinalDay(4, 'Thu', 11, $year)); $holidays[] = new holiday("Christmas", GetTimeStamp("$year-12-25")); $numHolidays = count($holidays) - 1; $out_array = array(); for ($i = 0; $i < $numHolidays; $i++){ $out_array[] = $holidays[$i]->date; } unset($holidays); return $out_array; } // end function getHolidays class holiday{ var $name; var $date; // Contructor to define the details of each holiday as it is created. function holiday($name, $date){ $this->name = $name; // Official name of holiday $this->date = $date; // UNIX timestamp of date } } // end class holiday ?> |
|
|
|
|
Aug 29 2007, 21:14
Poruka
#6
|
|
|
ih dobro je i ovo... samo kod nas nema St. Patrick`s Day
samo se nadam da ce ti biti od pomoci |
|
|
|
|
Aug 29 2007, 21:38
Poruka
#7
|
|
|
promenis u neki drugi dan
videcu jos koje cu racunanje da koristim. tvoje mi je nekako sigurnije.. bolje ga razumem |
|
|
|
|
![]() ![]() |
| Lo-fi verzija | Trenutno vreme: Wednesday 22. May 2013 - 12:26 |