Door
Loek Lemmens
op 14-03-2020 19:12
gewijzigd op 14-03-2020 19:13
5.254 views
Hallo,
Als een gebruiker een datum invoert bijvoorbeeld 14-03-2020 dan wil ik de naam van de dag terug krijgen.
Ik kan gebruik maken van de getDay() functie maar als ik de datum zo invoer gebeurt er niets omdat de format niet klopt.
In Javascript zou de datum zo ingevoerd moeten worden new Date("March 14, 2020 23:15:00");
<script type = "text/javascript">
var dateday = new Date("March 14, 2020 23:15:00"); //zo zou ik het willen-> var dateday = new Date("14-03-2020");
document.write(dateday.getDay());
</script>
Als je al wat safer wilt zijn kan je de inputbar ook op readonly zetten.
Dit heb ik even snel uitgetest op https://jqueryui.com/datepicker/ met een readonly via de webdeveloper tool. Maar dat is geen waterdichte oplossing uiteraard. Dus kijk wat $_POST['date'] uitspuugt, split e.v.t. met explode() erop, en doe een checkdate() erop.
Uiteraard, server side validatie is wel zo verstandig. Dat bestrijd ik ook nergens. Maar het ging meer over hoe je handig met datums omgaat dan hoe formulieren verwerkt zouden moeten worden geloof ik.
Tegelijkertijd lijkt het mij wel zo handig, en is het wel zo gebruiksvriendelijk, om een zodanig systeem te hebben dat het aanleveren van foutieve informatie zo lastig mogelijk is. Hoe minder gelegenheid je iemand geeft om foutieve informatie op te geven, hoe groter de kans dat de informatie direct klopt en de validatie ook meteen slaagt. Dat werkt doorgaans fijner dan dat een systeem vijf keer een formulier teruggeeft met een foutmelding.
Waar het mij omgaat is dat ik de naam van de dag terugkrijg.
Uiteraard wil ik het zo maken dat de meeste gebruikers ermee overweg kunnen dus of ze nu 2020-03-14 of 14-03-2020 invoeren, het moet beide kunnen werken.
Maar dat is voor latere zorg. Nu is het zo dat je de naam van de maand moet benoemen March ipv 03.
doe ik 03 14, 2020 dan krijg ik Nan terug
Waar het mij omgaat is dat ik de naam van de dag terugkrijg.
Uiteraard wil ik het zo maken dat de meeste gebruikers ermee overweg kunnen dus of ze nu 2020-03-14 of 14-03-2020 invoeren, het moet beide kunnen werken.
Maar dat is voor latere zorg. Nu is het zo dat je de naam van de maand moet benoemen March ipv 03.
doe ik 03 14, 2020 dan krijg ik Nan terug
Dus als je NaN krijgt probeer je de datum om te draaien zoals ik liet zien. Vervolgens maak je een Date object aan zoals je al zei en trek je de info er uit die je wilt.
Loek je hebt gelijk. Ik ben even gaan kijken en het blijkt dat de datum niet zomaar is om te draaien.
Uitgaande dat een gebruiker altijd vier cijfers voor het jaartal dient in te vullen en de mogelijke combinaties dd-mm-yyyy en yyyy-mm-dd mogen zijn ben ik uitgekomen op het volgende: