Muestra un contador de dias online con PHP, ASP, Perl y/o JavaScript en tu sitio web

Sencillo contador de dias online

Hace muchos años que inicio Hacking Ball Z, fue un 13 de Diciembre del año 2000; y con el paso del tiempo, muchas veces uno se pregunta cuantos días han transcurrido desde dicha fecha.

Producto de este cuestionamiento comence a buscar en Google scripts, y temas similares a este que mostraran un contador de días online, y en general los resultados fueron muchos, algunos scripts buenos, otros no tantos, pero una gran mayoría con un problema de desarrollo logico, y es que no tomaban en cuenta que cada cuatro años, nos encontramos con los años bisiestos que suman 1 día a los años en general.

Contador dias onlineOtro de los problemas fue, que tomaban en consideración el número de segundos por día que usualmente son 86400 (60 segundos * 60 minutos * 24 horas) para realizar sus cálculos; parámetro que varia, puesto que hay días de 23 horas, y otros de 25 horas cuando se realizan en los cambios de horarios en los países más grandes; y esto tomado como máxima, genera cálculos incorrectos.

Una vez analizado lo siguiente, e incluso analizado diferentes sitios de Internet que ofrecen el servicio de calculo, procedí a desarrollar el siguiente script, que nos funcionara como base, para realizar los siguientes.

Contador de dias online en Javascript

Para desplegar el contador de dias online, debemos utilizar la siguiente función, y debemos colocarla antes de </head> dentro de <script language=”javascript”> y </script>:

function hbz_day_counter(year,month,day){

// Defaults to void errors.
year = typeof(year) != 'undefined' ? year : 2000;
month = typeof(month) != 'undefined' ? month : 12;
day = typeof(day) != 'undefined' ? day : 13;

var today = new Date(); //Today
var start_ts = Date.UTC(year,(month - 1),day); //Since...

document.write(Math.floor((today - start_ts)/(1000*60*60*24) )-1);
}

Como podemos observar creamos la función hbz_day_counter, con los parametros year,month,day (año, mes, día), y luego definimos la fecha actual, y la la fecha desde donde debemos comenzar a contar.

En la función Date.UTC, vemos de manera interesante que a la variable month debemos restarle 1 numero, esto debido a que como es una matriz, los desarrolladores de JavaScript prefirieron nombrar a los meses de 0 a 11, en vez de 1 a 12.

Luego realizamos la operación matemática que nos permite concluir, el número de días entre ambas fechas.

Luego, donde deseemos invocar la función (o mejor dicho, imprimir los días), debemos colocar lo siguiente:

<script language=”javascript”>hbz_day_counter(2000,12,13)</script>

Por supuesto la fecha de ejemplo, es la de la función de HBZ que como lo dijimos fue el 13 de diciembre del año 2000.

Una vez que tuve listo el script en JavaScript, funcionando del lado del cliente (en el navegador), pues continué con mi amado PHP.

Contador de dias online con PHP

Del lado de PHP, para realizar un contador de días online, siguiendo la base del script de JavaScript, me encontré, que era indispensable calcular los días de los años bisiestos, por lo que de una… Con el código:

function hbz_day_counter($year=2000,$month=12,$day=13) {

$today = strtotime(date("Y-m-d")); //Today
$start_ts = strtotime("$year-$month-$day"); //Since...

$years = date(Y)-$year; //Years since...

if (($years%4) == 0) {
$extra_days = ((($end_year-$start_year)/4)-1);
} else {
$extra_days = ((($end_year-$start_year)/4));
}

$extra_days = round($extra_days);

echo round(($today - $start_ts)/(60*60*24)) + $extra_days + 1;

}

Debiendo invocar a la función, en donde deseamos que aparezcan los días transcurridos, de la siguiente forma:

hbz_day_counter(2000,12,13);

¿Súper sencillo no es cierto?

Claro… Ya este punto, viendo las opciones en Javascript, y PHP, me dije… por qué no ASP.NET?

Contador de dias online con ASP.NET

En ASP.NET las cosas siempre suelen ser más complicadas de lo que parecen, o de lo que serían en otro lenguaje, sin embargo, este no fue el caso, y se debe a que nos encontramos con la función DateDiff, que prácticamente hace todo lo que necesitamos.

function hbz_day_counter(year,month,day)

today = date() 'Today
start = day & "/" & month & "/" & year 'Since...

hbz_day_counter = DateDiff("d", start, today)

End Function

Colocando en la parte del script donde desiemos imprimir los días transcurridos según nuestro contador de días online lo siguiente:

response.write (hbz_day_counter(2000,12,13))

Teniendo JavaScript, PHP, ASP, pues finalmente, me anime, y desempolve mi perla…

Contador de dias online en Perl

Perl es tan poderoso como sus módulos, mismos que puedes (y debes…) instalar con CPAN. Por lo que revisando un poco, me encontré con Date::Calc, que nos permite una vez copilado en nuestro sistema, realizar la tarea de este blog y desplegar el contador de dias online, de manera sencilla y bastante certera.

use strict;
use warnings;
use Date::Calc qw(Delta_Days);

sub hbz_day_counter {

my @today = (localtime)[5,4,3]; #Today
$today[0] += 1900;
$today[1]++;

my @start = ($_[0], $_[1], $_[2]); #Since...

print Delta_Days(@start, @today);

}

Invocando la función de la siguiente manera:

hbz_day_counter(2000,12,13);

Espero que alguno de los 4 ejemplos en este blog cumpla con sus expectativas, y les recuerdo, que pueden dejar sus comentarios y/o consultas en la parte inferior a este blog sobre el contador de dias online.

Un hacking saludo…