Gebruik: |
int mktime ( int uur, int minuut, int seconde, int maand, int dag, int jaar [, int is_dst]) |
Uitleg: |
mktime zal de UNIX timestamp weergeven die overeenstemmen met de gegeven argumenten.
Dit is vooral handig om datums te vergelijken of tellingen uit te voeren.
De timestamp is een "long integer" dat het aantal seconden bevat tussen de UNIX EPOCH (waarvan de datum 1 januari 1970 is) en de tijd die aangeduid is.
Het argument is_dst kan weggelaten worden. Het kan op 1 gezet worden als de gevraagde tijd in "daylight savings time" is. "daylight savings time" wil zeggen dat men de klokken verzetten voor meer natuurlijk licht als men werkt, en de klokken tijdens de winter weer terugzetten.
De timestamp die de functie weergeeft kan het best gebruikt worden om op te slaan in een database bijvoorbeeld. Om er dan weer een volwaardige datum van te maken, moet je de functie date() gebruiken.
NOTA: Een datum met als jaar, maand en dag 0 wordt door PHP als illegaal beschouwd!
|
Voorbeeld: |
Het volgende zal de datum "Jan-01-1985" weergeven:
<?php
echo date ("M-d-Y", mktime (0,0,0,1,1,1985));
?>
Een iets uitgebreider voorbeeld; je wilt uitzoeken hoeveel dagen er nog zijn voor je volgende verjaardag.
<?php
// eerst de huidige datum aanmaken
$huidige_datum = mktime(0,0,0,date("m"),date("d"),date("Y"));
// de timestamp van je verjaardag:
$verjaardag = mktime(0,0,0,"10","28","1980");
// mijn VOLGENDE verjaardag (dus in DIT jaar):
$volgende_verjaardag = mktime(0,0,0,"10","28",date("Y"));
// ALS $volgende_verjaardag in het VERLEDEN is voeg dan één jaar er aan toe.
if ($volgende_verjaardag < $huidige_datum) {
$volgende_verjaardag = $volgende_verjaardag + (60*60*24*365);
}
// bereken de overige dagen tot je verjaardag
$aantal_dagen = intval( ( $volgende_verjaardag - $huidige_datum ) / (60*60*24));
echo "Mijn volgende verjaardag is over ".$aantal_dagen." dagen!!";
?>
|
Bijdragen :
|
vinTage
|
sowieso, over setlocale:
setlocale(LC_ALL, 'Dutch_Netherlands', 'Dutch', 'nl_NL', 'nl', 'nl_NL.ISO8859-1', 'nl_NL.UTF-8', 'nld_nld', 'nld', 'nld_NLD', 'NL_nl');
setlocale(LC_ALL , 'Dutch_Netherlands', 'Dutch', 'nl_NL', 'nl', 'nl_NL.ISO8859-1', 'nl_NL.UTF-8', 'nld_nld', 'nld', 'nld_NLD', 'NL_nl');
|
|
|
Maarten
|
Féderic:
Je kan in je voorbeeld
<?php
mktime( 0, 0, 0, date("m"), date("d"), date("Y");
?>
toch gewoon vervangen door time(), want of het nu 0 uur is of 23 uur, de dag zal altijd dezelfde zijn... |
|
|
Frederic
|
Je kan met mktime() heel makkelijk de huidige datum in het Nederlands weergeven:
<?php
setlocale (LC_ALL, 'nl_NL');
echo ucfirst( strftime( "%A %e %B %Y", mktime( 0, 0, 0, date("m"), date("d"), date("Y") ) ) ) . " " . date("H:i:s", time());
// Woensdag 11 januari 2006 20:20:21
?>
<?php // Woensdag 11 januari 2006 20:20:21 ?>
Note: Soms moet je
<?php
setlocale (LC_ALL, 'Dutch');
?>
gebruiken om het te laten werken. Soms werkt het ook helemaal niet, de taalmodule moet nl. op de server geinstalleerd zijn, en dit is niet overal het geval! |
|
|
|
|
|