Hi,

The algorithm below is not accurate - you must find the Julian day for each
date and then subtract the 2 dates.

Cheers,

Rui Fernandes

----- Original Message ----- From: "Dr.Ruud" <[EMAIL PROTECTED]>
To: <datetime@perl.org>
Sent: Tuesday, May 30, 2006 4:18 PM
Subject: Re: Time Difference


"Charitha Dias" schreef:

The format of date and time is something like YYYYMMDDhhmmssmm (for
example 2001030400060400). Actually I need to get time difference.
For example I want to get difference between 2001030400053200 and
2001030400060400.

What precision do you need?

#!/usr/bin/perl
# delta-time guesser

 use strict ;
 use warnings ;

 sub delta_time
 {
   my $t ;

   my $RE =
      qr/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:(\d{2}))?/ ;
        #   ccyy   mm     dd     HH     MM     SS        CC

   sub calc { ( ( ( ( ( $1*365.25 + $2*365.25/12 + $3
                      ) * 24 + $4
                    ) * 60 + $5
                  ) * 60 + $6
                ) + ($7 or 0)/100
              )
            }

   $_[0] =~ $RE  and  $t -= calc()  and
   $_[1] =~ $RE  and  $t += calc()  and  return $t ;
   return
 }


 if ( my $t = delta_time '2001030400053240',
                         '20010304000604' ) {
   printf "%.2f seconds\n", $t ;
 } else {
   print "ERROR\n" ;
 }

--
Affijn, Ruud

"Gewoon is een tijger."






Reply via email to