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/