I Perl programmering , eftersom datum kan ha tecken som mellanslag, kommatecken eller brev , kan du inte bara ta två datum och subtrahera från varandra . Du måste konvertera dem till rena siffror innan du kan få skillnaden mellan de två, sedan tillbaka detta värde till användaren . Konvertera de två datum till epok tid , vilket är en beräkning av det antal sekunder som gått sedan 1 januari 1970 . Detta gör att du kan dra ett datum värde från den andra för att få skillnaden . Instruktioner
1
Öppna ett nytt Perl programfil . Skriv följande kod : .
Använder Time :: Lokalt ,
Denna modul innehåller datum och tid funktioner du behöver för att beräkna tidsvärden
2
Type följande code :
print " Ange dag ( 1-31 ) : " ;
$ dag = < > ;
print " Ange månad ( 1-12 ) : " ;
$ månad = < > ;
$ månad = $ månad - 1 ,
print " Ange år : " ;
$ år = < > ;
$ år = $ år - 1900;
Dessa rader uppmana användaren att ange en dag i månaden , månad och år , allt som heltal . Du måste stega månaden värdet av en eftersom " timelocal " funktion använder månaders värden från noll till 11 , inte en till 12 . Dessutom måste du subtrahera 1900 från år värdet för denna funktion också . Du kan programmera någon felkontroll kod för att säkerställa att användaren anger ett korrekt värde , eller om du vill att användaren ska kunna ange ett månadens namn , t.ex. " Januari , " program en funktion för att konvertera det värdet till noll .
Billiga 3
Skriv följande kod :
$ tid = timelocal ( 0,0,0 , $ dag , $ månad , $ år ) ,
Detta skapar en variabel som heter $ tid som anropar timelocal funktionen att konvertera användaren in datum epok tid . De tre första parametrarna är alla nollor eftersom de står för sekunder, minuter och timmar . Du kan fråga användaren om dessa värden samt om du vill . Den timelocal Funktionen returnerar ett fel om ett datum inte existerar , såsom Mars 35 eller till och med 31 juni , så se till att din kod kontrollerar om dessa möjligheter
4
Skriv följande kod : .
$ curtime = tid ;
$ diff = $ curtime - $ tid ,
första raden skapar en variabel som heter $ curtime som använder tiden för att returnera det aktuella datumet i epok tid . Den andra raden skapar en variabel som heter $ diff som blir skillnaden för aktuellt datum minus användaren - in datum . Den heltal Resultatet är det antal sekunder som finns mellan de två datumen . Om talet är positivt , då användaren dagen kommer före dagens datum . Om talet är negativt , kommer det efter
5
Skriv följande kod : .
If ( $ diff > 0 ) {
$ diff = int ( $ diff /60/60/24) ,
print $ diff . " Dagar har gått sedan det datum du angav . " ;
} Else {
$ diff = abs ( int ( $ diff /60/60/24)) ,
skriva " Det finns " . $ diff . "Fler dagar till det datum du angav ."
}
Om funktionskontroller för att se om användaren - in dag inträffar före eller efter det aktuella datumet , bara veta vilket uttalande skriva ut på skärmen . I båda fallen , omvandlar $ diff värde från sekunder till dagar , och därefter till ett heltal från en flottör ( för att undvika att skriva ut flera decimaler ) . Om värdet är negativt , blir abs funktion det absoluta värdet i huvudsak vrida negativt tal till ett positivt tal. Till exempel " -15 dagar " blir " 15 dagar ".
6
Spara och köra Perl -programmet .