Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Re: Date difference?

by chicks (Scribe)
on Apr 29, 2002 at 01:46 UTC ( [id://162737]=note: print w/replies, xml ) Need Help??


in reply to (ar0n: Date::Calc ) Re: Date difference?
in thread Date difference?

I'm fond of Date::Calc, so I played with your example a bit since I had never used it that way myself. I found something that seemed curious to me. Your example has the delta as negative, since @date_one is before @date_two. That makes sense. But Date::Calc seems to cause each and every element returned by Delta_DHMS to be negative. Should just the first element be negative?
[chicks]$ perl x -33:-7:-47:-19 33:7:47:19 [chicks]$ cat x #!/usr/bin/perl -w use Date::Calc qw/Delta_DHMS/; my @date_one = qw/2002 04 25 23 12 40/; my @date_two = qw/2002 03 23 15 25 21/; my ($dd, $dh, $dm, $ds) = Delta_DHMS(@date_one, @date_two); print "$dd:$dh:$dm:$ds\n"; ($dd, $dh, $dm, $ds) = Delta_DHMS(@date_two, @date_one); print "$dd:$dh:$dm:$ds\n";

Replies are listed 'Best First'.
Re: Re: Re: Date difference?
by jlongino (Parson) on Apr 29, 2002 at 02:38 UTC
    This is explained in  perldoc Date::Calc
    * "($Dd,$Dh,$Dm,$Ds) = Delta_DHMS($year1,$month1,$day1, $hour1,$min1,$sec1, $year2,$month2,$day2, $hour2,$min2,$sec2);" This function returns the difference in days, hours, minutes and seconds between the two given dates with times. All four return values will be positive if the two dates are in chronological order, i.e., if date #1 comes chronologically BEFORE date #2, and negative (in all four return values!) if the order of t +he two dates is reversed. This is so that the two functions ""Delta_DHMS()"" and ""Add_Delta_DHMS()"" (description see further below) are complementary, i.e., mutually inverse: Add_Delta_DHMS(@date1,@time1, Delta_DHMS(@date1,@time1, @date2,@ti +me2)) yields ""(@date2,@time2)"" again, whereas Add_Delta_DHMS(@date2,@time2, map(-$_, Delta_DHMS(@date1,@time1, @date2,@time2))) yields ""(@date1,@time1)"", and Delta_DHMS(@date1,@time1, Add_Delta_DHMS(@date1,@time1, @delta)) yields ""@delta"" again. The result is zero (in all four return values) if the two dates and times are identical.

    --Jim

      I know it's explained in the docs, but it still seems counterintuitive.
        Perhaps it will make more sense if you play with the code examples they give after explaining that they want functions Delta_DHMS() and Add_Delta_DHMS() to be complementary/mutually inverse.

        It seems intuitive to me, particularly if you were going to use the positive/negative results as arguments in a followup function call.

        --Jim

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://162737]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (3)
As of 2024-04-25 17:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found