I Perl programmering, fordi datoer kan ha tegn, for eksempel mellomrom, komma eller brev , kan du ikke bare ta to datoer og trekke en fra den andre. Du må konvertere dem til rene tall før du kan få forskjellen mellom de to, deretter tilbake som verdi for brukeren . Konvertere de to datoene til epoken tid , som er en beregning av antall sekunder som har gått siden den første januar 1970 . Dette gjør at du kan trekke fra én dato verdi fra den andre for å få forskjellen . Instruksjoner
en
Åpne en ny Perl programfilen. Skriv inn følgende kode : .
Bruk Tid :: Local ;
Denne modulen inneholder dato og klokkeslett funksjoner du trenger for å beregne tidsverdiene
2
Skriv inn følgende kode :
print "Enter dag ( 1-31) :";
$ dag = < > ;
print "Enter måned ( 1-12) : ";
$ måned = < > ;
$ måned = $ måned - 1;
print " Enter år : ";
$ år = < > ;
$ år = $ året - 1900 ;
Disse linjene be brukeren om å skrive inn en dag i måneden , måned og år , alle som heltall. Du må minske måned med én fordi " timelocal " funksjonen bruker måneders verdier fra null til 11 , ikke en til 12 . Også , må du trekke fra 1900 fra året verdi for denne funksjonen også. Du kan programmere noen feil sjekke koden for å sikre brukeren angir en riktig verdi , eller hvis du vil tillate en bruker å skrive inn et navn på måned , for eksempel " januar "-programmet en funksjon for å konvertere denne verdien til null.
3
Skriv inn følgende kode :
$ tid = timelocal ( 0,0,0 , $ dag, $ måned , $ året ) ;
Dette skaper en variabel kalt $ tid som kaller timelocal funksjonen til å konvertere den brukervennlige sendedatoen til epoken tid . De tre første parametrene er alle nuller fordi de står for sekunder, minutter og timer . Du kan be brukeren om disse verdiene også hvis du vil. Den timelocal funksjonen returnerer en feil hvis en dato som ikke eksisterer , for eksempel Mars 35 eller 31. juni , så sørg for at din kode sjekker for disse mulighetene
4
Skriv inn følgende kode : .
$ CurTime-verdien = tid ;
$ diff = $ CurTime-verdien - $ tid,
den første linjen skaper en variabel kalt $ CurTime-verdien som bruker tiden funksjonen til å returnere gjeldende dato i epoken tid . Den andre linjen skaper en variabel kalt $ diff som får forskjellen på dagens dato minus brukeren - sendedatoen . Den heltall Resultatet er antall sekunder som eksisterer mellom de to datoene . Hvis tallet er positivt , så brukeren datoen kommer før gjeldende dato . Hvis tallet er negativt , kommer det etter
5
Skriv inn følgende kode : .
If ( $ diff > 0 ) {
$ diff = int ( $ diff /60/60 /24) ;
print $ diff . " Dager har gått siden den datoen du har angitt. ";
} Else {
$ diff = abs ( int ( $ diff /60/60 /24) ) ;
< p > print " There are" . $ diff . " Flere dager inntil datoen du har angitt . ";
}
HVIS-funksjonen sjekker for å se om brukeren - sendedatoen er før eller etter dagens dato, bare for å vite hvilke uttalelse til skrive ut på skjermen. I begge tilfeller , konverterer $ diff verdi fra sekunder inn dager , og deretter til et helt tall fra en flottør (for å unngå ut flere desimaler) . Hvis verdien er negativ , blir ABS-funksjonen den absolutte verdi , i hovedsak å dreie det negative tallet inn i et positivt tall. For eksempel " -15 dager " blir " 15 days ".
6
Lagre og kjøre Perl program .