# Days

I want to make a program to count a total days, examples i saved 01-31-98 (mm/dd/yy) then if today is 01-01-99 (mm/dd/yy) the program count a total days from 01-31-98. so the output from the program will be 1 days.
others examples, i save 02-01-99 then i input 03-01-99 then the outpun must be 28 days.. the output must be in days!!
Thanks
LVL 1
###### Who is Participating?

Commented:
#!/usr/local/bin/perl

\$days = &days_since_1990(1998, 3, 1) -  &days_since_1990(1998, 2, 1);
print "Days: \$days\n";

sub leap_year
{
local(\$year); \$year = shift;
local(\$x);
\$x = (((\$year % 4 == 0) && (\$year % 100 != 0)) || (\$year % 400 ==0));
return \$x;
}

sub days_in_year
{
local(\$year); \$year = shift;
return (&leap_year(\$year) ? 366 : 365);
}

sub days_in_month
{
local(\$year); \$year = shift;
local(\$month); \$month = shift;
@days_per_month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

if ((\$month<1) || (\$month>12))
{

\$days=0;
}
else
{
\$days = \$days_per_month[\$month - 1];
if (&leap_year(\$year) && (\$month == 2))
{
\$days++;
}
}
return \$days;
}

sub day_of_year
{
\$year = shift;
\$month = shift;
\$day = shift;
local(\$x);
local(\$day_count);

\$day_count=0;
for (\$x=1;\$x<\$month;\$x++)
{
\$day_count += &days_in_month(\$year, \$x);
}
return (\$day_count + \$day);
}

sub days_since_1990
{
local(\$year); \$year = shift;
local(\$month); \$month = shift;
local(\$day); \$day = shift;
local(\$x);
local(\$day_count);

\$day_count=0;

if (\$year<1990)
{
return 0;
}

for (\$x=1990;\$x<\$year;\$x++)
{
\$day_count += &days_in_year(\$x);
}
\$day_count += &day_of_year(\$year, \$month, \$day) - 1;

return \$day_count;
}

0

Commented:
sub days_since_1990 { use Time::Local; (timegm(0,0,0,\$_[2],\$_[1]-1,\$_[0]-1900)-timegm(0,0,0,1,1-1,1990-1900)) / (60*60*24) }
0

Commented:
I just ported over my old C code, your is a little shorter =)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.