# Define arrays for the day of the week and month of the year. # @days = ('Zondag','Maandag','Dinsdag','Woensdag', 'Donderdag','Vrijdag','Zaterdag'); @months = ('Januari','Februari','Maart','April','Mei','Juni','Juli', 'Augustus','September','Oktober','November','December'); # Get the current time and format the hour, minutes and seconds. Add # # 1900 to the year to get the full 4 digit year. # ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6]; $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec); $year += 1900; # Format the date. # $date = "$days[$wday], $mday $months[$mon], $year om $time";
# Define arrays for the day of the week and month of the year. # @days = ('Zondag','Maandag','Dinsdag','Woensdag', 'Donderdag','Vrijdag','Zaterdag'); @months = ('Januari','Februari','Maart','April','Mei','Juni','Juli', 'Augustus','September','Oktober','November','December');
# Get the current time and format the hour, minutes and seconds. Add # # 1900 to the year to get the full 4 digit year. # ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6]; $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec); $year += 1900;
# Format the date. # $date = "$days[$wday], $mday $months[$mon], $year om $time";
De functie time geeft de UNIX-systeemtijd in seconden sinds 1-1 1970, en de functies localtime() en gmtime() zetten dat om in seconden, minuten, uren, dag, maand, jaar.
Een webserver weet natuurlijk niet in welke tijdzone de persoon zich bevindt die die knop op het webform indrukt. Als je dat voor elkaar wil krijgen zou je het aan de gebruiker moeten vragen door een tijdzone-veld aan het formulier toe te voegen. En de bijbehorende code om dat af te handelen. Als je dan ervoor zorgt dat bijvoorbeeld de variabele $timezone de tijdzone in uren tov UTC bevat, dan verander je de expressie localtime(time) in gmtime(time+$timezone*3600).
Voor Nederland geldt dan trouwens $timezone = 1, in wintertijd en $timezone = 2 gedurende de zomertijd. Dus als je het alleen voor Nederland nu even snel wil oplossen wordt het:
($sec,$min,$hour,$mday,$mon,$year,$wday) = (gmtime(time+2*3600))[0,1,2,3,4,5,6];
En dan even die 2 in een 1 veranderen als over een paar weken de zomertijd weer voorbij is.