Come ottenere la differenza di due date in Perl

February 27

Nella programmazione Perl, perché le date possono avere personaggi come spazi, virgole o lettere, non si può semplicemente prendere due date e sottrarre l'uno dall'altro. È necessario convertirli in numeri puri prima di poter ottenere la differenza tra i due; ripristinare tale valore per l'utente. Convertire le due date in tanto epoca, che è un calcolo del numero di secondi che sono passati dal 1 gennaio 1970. Ciò consente di sottrarre un valore di data dall'altro per ottenere la differenza.

istruzione

1 Aprire un nuovo file di programma Perl. Digitare il seguente codice:

utilizzare Time :: locale;

Questo modulo contiene funzioni di data e ora è necessario per calcolare i valori di tempo.

2 Digitare il seguente codice:

stampare "Inserire giorno (1-31):";

$ Al giorno = <>;

stampare "Enter mese (1-12):";

$ Mese = <>;

$ Mese = $ al mese - 1;

stampare "Enter anno:";

$ Anno = <>;

$ Anno = $ anno - 1900;

Queste linee richiedono all'utente di inserire un giorno del mese, mese e anno, tutti come numeri interi. È necessario diminuire il valore del mese da uno perché la funzione "timelocal" utilizza i valori mese da zero a 11, non uno a 12. Inoltre, è necessario sottrarre 1900 dal valore anno per questa funzione pure. È possibile programmare un codice il controllo degli errori al fine di garantire l'utente immette un valore adeguato, o se si desidera consentire a un utente di immettere un nome del mese, come il programma "gennaio", una funzione per convertire tale valore a zero.

3 Digitare il seguente codice:

$ Time = timelocal (0,0,0, $ al giorno, $ al mese, $ l'anno);

Questo crea una variabile denominata $ tempo che chiama la funzione timelocal per convertire la data dall'utente presentato al epoch tempo. I primi tre parametri sono tutti zeri, perché essi rappresentano secondi, minuti e ore. È possibile richiedere all'utente di questi valori, come pure se si vuole. La funzione timelocal restituisce un errore se una data non esiste, come ad esempio marzo 35 o addirittura 31 giugno, in modo da assicurarsi che il proprio codice controlla queste possibilità.

4 Digitare il seguente codice:

$ Curtime = tempo;

$ Diff = $ curtime - $ tempo;

La prima riga crea una variabile denominata $ curtime che utilizza la funzione di tempo per restituire la data corrente in tempo epoca. La seconda riga crea una variabile denominata $ diff che ottiene la differenza della data corrente meno la data di inviati dall'utente. Il risultato intero è il numero di secondi che intercorrono tra le due date. Se il numero è positivo, allora la data all'utente viene prima della data corrente. Se il numero è negativo, viene dopo.

5 Digitare il seguente codice:

if ($ diff> 0) {

$diff = int($diff / 60 / 60 / 24);

print $ diff. "Giorni sono passati da quando la data immessa.";

} altro {

$diff = abs(int($diff / 60 / 60 / 24));

print "Ci sono". $ Diff. "Più giorni, fino alla data in cui sono entrati.";

}

Il se i controlli funzione per vedere se la data dall'utente presentato è prima o dopo la data corrente, solo per sapere quale dichiarazione di stampare sullo schermo. In entrambi i casi, il valore $ diff converte da secondi in giorni, e poi in un numero intero da un galleggiante (per evitare la stampa di più decimale). Se il valore è negativo, la funzione abs ottiene il valore assoluto, essenzialmente trasformando il numero negativo in un numero positivo. Ad esempio, "-15 giorni" diventa "15 giorni".

6 Salvare ed eseguire il programma Perl.

Consigli e avvertenze

  • Non è necessario utilizzare il tempo corrente nel programma. È possibile richiedere all'utente per due date, invece di uno e poi entrambi convertirli in tempo all'epoca utilizzando la funzione timelocal.