Hi Rob, 

When I set the date to 30-Jan-2009 and run the code given below, 

Eg : 

When dates are set as : 

my $days1 = epoch_days('30-Jan-09');
my $days2 = epoch_days('29-Feb-2009');

I get the below error. 

hpcll402:/home/ssssraji/perl>./date2.pl
Day '30' out of range 1..28 at ./date2.pl line 35


-Rajini 





>-----Original Message-----
>From: S, Rajini (STSD) 
>Sent: Friday, January 30, 2009 9:50 AM
>To: Rob Dixon; Perl Beginners
>Subject: RE: Query in Perl Programming
>
>
>Thanks Rob, the solution which you suggested works fine. 
>
>-Rajini 
>
> 
>
>>-----Original Message-----
>>From: Rob Dixon [mailto:rob.di...@gmx.com]
>>Sent: Wednesday, January 28, 2009 5:45 PM
>>To: Perl Beginners
>>Cc: S, Rajini (STSD)
>>Subject: Re: Query in Perl Programming
>>
>>S, Rajini (STSD) wrote:
>>> From: Gunnar Hjalmarsson [mailto:nore...@gunnar.cc]
>>>> S, Rajini (STSD) wrote:
>>>>>
>>>>> I am new to Perl Programming and have a query in perl. 
>>>>>
>>>>> In perl is there any system defined functions to find out the 
>>>>> Differences in dates.
>>>>>
>>>>> Eg : 
>>>>>
>>>>> Date 1 -> 26-Jan-2009
>>>>> Date 2 -> 14-Jan-2009
>>>>>
>>>>> So the difference between two dates is 12 days. 
>>>>>
>>>>> Is there a way to achieve this with any system defined
>>functions In
>>>>> Perl ????
>>>>
>>>> It depends on what you mean by "system defined functions". 
>>As others
>>>> have told you, there are many CPAN modules that deal with date and 
>>>> time related tasks. Your particular problem can be easily solved 
>>>> using only a module that is included in the standard Perl 
>>>> distribution.
>>>>
>>>>     use Date::Parse;
>>>>
>>>>     my $time1 = str2time '26-Jan-2009';
>>>>     my $time2 = str2time '14-Jan-2009';
>>>>
>>>>     print 'Difference: ',
>>>>       sprintf( '%.0f', ($time1-$time2)/86400 ), " days\n";
>>>>
>>>
>>> Thanks Gunnar for the suggestions. 
>>> 
>>> In which version of perl is Parse module available. 
>>> 
>>> We have perl version 5.8.0 and parse module is not available. 
>>
>>(Please bottom-post your responses to this group. Thank you.)
>>
>>As far as I know Gunnar is mistaken and Date::Parse is not a standard 
>>module in any version of Perl. However Time::Local is, and you may be 
>>interested in the solution below that uses it. If your dates aren't 
>>guaranteed to be well-formed then you may want to do some checking on 
>>them before you call the epoch_days function.
>>
>>HTH,
>>
>>Rob
>>
>>
>>use strict;
>>use warnings;
>>
>>use Time::Local;
>>
>>my $days1 = epoch_days('26-Jan-2009');
>>my $days2 = epoch_days('14-Jan-2009');
>>
>>print "Difference: @{[$days1 - $days2]} days\n";
>>
>>BEGIN {
>>
>>  my %month_num = do {
>>    my $n = 1;
>>    map(($_, $n++), qw/jan feb mar apr may jun jul aug sep oct nov 
>>dec/);
>>  };
>>
>>  sub epoch_days {
>>
>>    my @dmy = split /-/, shift;
>>    $dmy[1] = $month_num{lc $dmy[1]} || 0;
>>
>>    return timelocal(0, 0, 0, @dmy) / (24 * 60 * 60);
>>  }
>>}
>>
>--
>To unsubscribe, e-mail: beginners-unsubscr...@perl.org For 
>additional commands, e-mail: beginners-h...@perl.org 
>http://learn.perl.org/
>
>
>
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to