Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Days

Posted on 1998-12-07
3
Medium Priority
?
192 Views
Last Modified: 2010-05-18
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
0
Comment
Question by:ichen
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 1

Accepted Solution

by:
flivauda earned 300 total points
ID: 1206783
#!/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
 
LVL 84

Expert Comment

by:ozo
ID: 1206784
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
 
LVL 1

Expert Comment

by:flivauda
ID: 1206785
I just ported over my old C code, your is a little shorter =)
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question