Functie om een seizoen terug te geven

Door Michael Voeten, 19 jaar geleden, 4.957x bekeken

Ik moest voor een klant een script schrijven om het huidige jaargetijde te krijgen.

Ik heb er gelijk een hergebruikbare functie van gemaakt.

Ik zie/lees graag aan of opmerkingen

functie kan worden aangeroepen op de volgende manier

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  echo getSeason(date('d'),date('m'),date('Y'));
?>

Gesponsorde koppelingen

PHP script bestanden

  1. functie-om-een-seizoen-terug-te-geven

 

Er zijn 15 reacties op 'Functie om een seizoen terug te geven'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
19 jaar geleden
 
0 +1 -0 -1
Dus vanaf volgend jaar niet meer te gebruiken?
Waarom noem je hem dan "herbruikbaar"?

Is het trouwens niet elk jaar dat de winter,lente,zomer,herfst op de 21ste begint?

En ipv een string terug te geven zou beter geweest zijn een getal van 1 t.e.m. 4 te leveren, waar 1 winter is, dan kan de rest van je script er de juiste taal aan hangen ofzo.
Michael Voeten
Michael Voeten
19 jaar geleden
 
0 +1 -0 -1
omdat een beetje slim mens zelf de array kan vullen
Ik heb ze uit het origineel gehaald omdat dit 40 regels tekst scheelt

en nee helaas beginnen de seizoenen niet elk jaar op de zelfde datum
Wiki Winter
Wiki Lente
Wiki Zomer
Wiki Herfst

Met Int ipv string is idd ook een oplossing en weer minder code = snellere laadtijd

Edit:
Aanpassing gedaan ( tekst => INT )
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Op die wiki's lees ik dat er een verschil zit tussen de astronomische seizoenen (die inderdaad niet altijd op de 21e beginnen) en de conventionele seizoenen (de seizoenen die we doorgaans bedoelen en die wel op de 21e beginnen). Naar mijn idee kan je dus zeker wel uitgaan van de 21e van de desbetreffende maanden (wat je nu volgens mij ook doet?). Het lijkt me alleen dat een switch wat omslachtig is, het zou wellicht korter kunnen? En voor het zuidelijk halfrond geldt het natuurlijk niet hè! ;)

Edit:
korter
Jelle Posthuma
Jelle Posthuma
19 jaar geleden
 
0 +1 -0 -1
Zo kan het ook:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function getSeason($datum){ // dd-mm
    $date = explode('-',$datum);
    if($date[1] < 3 || ($date[1] == 3 && $date[0] < 22) ){
        return 'Winter';
    }
elseif($date[1] < 6 || ($date[1] == 6 && $date[0] < 22) ){
        return 'Lente';
    }
elseif($date[1] < 9 || ($date[1] == 9 && $date[0] < 22) ){
        return 'Zomer';
    }
elseif($date[1] < 3 || ($date[1] == 3 && $date[0] < 22) ){
        return 'Winter';
    }
elseif($date[1] < 12 || ($date[1] == 12 && $date[0] < 22) ){
        return 'Herfst';
    }
else{
        return 'Winter';
    }
}


echo getSeason(date('d-m'));
echo getSeason('8-10');
?>


Er is gewoon rekening gehouden met de 21e van de maand, omdat dat het meest voorkomt.
Eddy E
Eddy E
19 jaar geleden
 
0 +1 -0 -1
@ Jelle:

<= kan natuurlijk ook ;).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 if($date[1] <= 3 && $date[0] < 22) ){
?>
Tristan nvt
Tristan nvt
19 jaar geleden
 
0 +1 -0 -1
Waarom moet er hier op phphulp bij zowat ELK script weer iemand het beter weten? Ik plaats daarom hier bewust geen scripts, 't wordt toch afgezeken. Werkt niet echt stimulerend voor de meeste beginners lijkt me.

En als je aankomt met het argument dat er kwaliteitsscripts in de library moeten, zorg dan dat er een script-check functie komt.
Robert Deiman
Robert Deiman
19 jaar geleden
 
0 +1 -0 -1
@Tristan
Ze geven voorbeelden hoe het eenvoudiger en generieker kan. Het script zoals bovenstaand is eigenlijk maar heel beperkt. Het is geen commentaar maar een aanvulling op. Het idee is natuurlijk leuk, maar er zijn handigere manieren.
Tristan nvt
Tristan nvt
19 jaar geleden
 
0 +1 -0 -1
@Robert - ben het met je eens, maar het is niet alleen dit script. Bijna elk script in de categorie "Beginners" (de naam zegt t al) wordt "verbeterd" en "aangevuld" met scripts die misschien wel beter zijn, maar die een beginner echt niet zomaar kan maken.
Eddy E
Eddy E
19 jaar geleden
 
0 +1 -0 -1
Met de bedoeling dat je je scripts ook verbeterd en er zelf dus ook beter van wordt.
Iedereens scripts (ook van de pro's en ervaren) worden vaak verbeterd.
Nou en? Dat is toch alleen maar mooi?

Waarom genoegen nemen met een script wat, op zich wel goed is, maar gewoon beter kan?
En door die verbeteringen wordt de beginner ook beter, zodat hij in het vervolg ook dat soort (betere) scripts kan maken.
Robert Deiman
Robert Deiman
19 jaar geleden
 
0 +1 -0 -1
Kijk maar eens bij scripts van mij (ik ben echt geen beginner) maar ook daar komen vaak verbeteringen op. Het gaat er (vooral in het begin) om om te laten zien dat sommige dingen heel goed anders kunnen en dat het soms zelfs makkelijker kan.

Het gaat er ook niet om dat de beginner dat zomaar kan maken maar dat deze ziet hoe het ook kan, dat hij kan onderzoeken hoe het andere dan werkt en waarom dat beter is (als dat niet al is uitgelegd). Daar leert diegene weer van.

Ik kan niet anders zeggen dan dat ik dankbaar ben voor alles wat ik op zo'n manier (en dat is niet alleen op een forum, maar ook in het dagelijks leven) heb geleerd.
Frank
Frank
19 jaar geleden
 
0 +1 -0 -1
zo kan het natuurlijk ook:

if(date("z") > 79 && date("z") < 172)
echo "lente";

if(date("z") > 171 && date("z") < 264)
echo "zomer";

if(date("z") > 263 && date("z") < 355)
echo "herfst";

if((date("z") > 354 && date("z") < 367) OR (date("z") > 0 && date("z") < 80)) echo "winter";

Gr Lessy
Eddy E
Eddy E
19 jaar geleden
 
0 +1 -0 -1
En met schrikkeljaar? Hoe zit het dan?
RvW Of toch niet
RvW Of toch niet
19 jaar geleden
 
0 +1 -0 -1
nou volgens mij heeft en schrikkeljaar 366 dagen ?
if((date("z") > 354 && date("z") < 367)
dus....
Jelle Posthuma
Jelle Posthuma
19 jaar geleden
 
0 +1 -0 -1
@Tristan,

Als een beginner een script plaatst, en in de reacties komen er scripts die korter en krachtiger zijn, daar kan die beginner toch van leren.

Hij leert hoe het compacter kan.
Hoe je meer kan met weinig.
Hoe je zo weinig mogelijk bandbreedte gebruikt.

Dat zijn allemaal dingen die je als beginner toch hoe dan ook tegenkomt in grotere scripts.

De beginner kent zijn eigen script, die weet wat elke regel doet, als ie dan een verbeterd script ziet, dan zal die het ook sneller snappen dan dat ie uit het niets zo'n script snapt.

Als ik een script plaats, vind ik het juist beter om reacties te krijgen met hoe het beter kan.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- -
- -
19 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

define('WINTER', 1);
define('LENTE', 2);
define('ZOMER', 3);
define('HERFST', 4);

?>


Dan kun je gewoon zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

function getSeason( ... ) {
    // ...
    return WINTER;
}


if( getSeason( ... ) == WINTER ) {
    // ...
}

?>

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. functie-om-een-seizoen-terug-te-geven

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.