Tecnología

Inicio

Cómo obtener la diferencia de dos fechas en Perl

En la programación Perl, ya que las fechas pueden tener caracteres como espacios, comas o letras, no se puede simplemente tomar dos fechas y restar uno del otro. Es necesario para convertirlos en números puros antes de poder obtener la diferencia entre los dos; luego volver que el valor para el usuario. Convertir las dos fechas para el tiempo época, que es un cálculo del número de segundos que han transcurrido desde el 1 de enero de 1970. Esto le permite restar un valor de fecha de la otra para obtener la diferencia.

Instrucciones

1 Abrir un nuevo archivo de programa Perl. Escriba el siguiente código:

utilizar Time :: Local;

Este módulo contiene funciones de fecha y hora que necesita para calcular los valores de tiempo.

2 Escriba el siguiente código:

imprimir "Introducir el día (1-31):";

$ Dia = <>;

print "Introduce el mes (1-12):";

$ Mes = <>;

$ Mes = $ mes - 1;

print "Introduce año:";

$ Año = <>;

$ = $ Año año - 1900;

Estas líneas se solicita al usuario que introduzca un día del mes, mes y año, todos los números enteros. Es necesario para disminuir el valor de mes por uno porque la función "timelocal" utiliza valores del mes de cero a 11, no uno a 12. Además, es necesario restar el valor 1900 del año para esta función también. Se puede programar un código de comprobación de errores para garantizar que el usuario introduce un valor adecuado, o si desea permitir al usuario introducir un nombre de mes, como por ejemplo ", Enero" programa de la función de convertir ese valor a cero.

3 Escriba el siguiente código:

$ Tiempo = timelocal (0,0,0, $ día, mes $, $ año);

Esto crea una variable llamada $ vez que llama a la función timelocal para convertir la fecha enviado por los usuarios a efeméride del instante. Los tres primeros parámetros son todos ceros porque dan cuenta de segundos, minutos y horas. Puede preguntar al usuario por estos valores, así que si quieres. La función timelocal devuelve un error si una fecha no existe, por ejemplo, marzo 35, o incluso 31 de junio así que asegúrese de que su código comprueba si estas posibilidades.

4 Escriba el siguiente código:

$ Curtime = tiempo;

$ Diff = $ curtime - $ tiempo;

La primera línea crea una variable llamada $ curtime que utiliza la función de tiempo para devolver la fecha actual en tiempo época. La segunda línea crea una variable llamada $ diff que obtiene la diferencia de la fecha actual menos la fecha enviado por el usuario. El resultado entero es el número de segundos que existen entre las dos fechas. Si el número es positivo, entonces la fecha de usuario viene antes de la fecha actual. Si el número es negativo, se trata después.

5 Escriba el siguiente código:

if ($ diff> 0) {

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

print $ diff. "Días han pasado desde la fecha que ha introducido.";

} Else {

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

imprimir "Hay". $ Diff. "Más días hasta la fecha en que entraron.";

}

La función comprueba si para ver si la fecha es enviado por el usuario antes o después de la fecha actual, sólo para saber qué afirmación para imprimir en la pantalla. En ambos casos, el valor de $ diff convierte desde segundos a días, y luego a un número entero de un flotador (para evitar la impresión de varios lugares decimales). Si el valor es negativo, la función abs obtiene el valor absoluto, esencialmente convirtiendo el número negativo en un número positivo. Por ejemplo, "-15 días" se convierte en "15 días".

6 Guarde y ejecute el programa de Perl.

Consejos y advertencias

  • Usted no tiene que utilizar la hora actual en su programa. Puede solicitar al usuario dos fechas en lugar de uno y luego convertirlos tanto en cuando se utiliza la función época timelocal.