"John W. Krahn" wrote:
>
> Sandeep Pathare wrote:
> >
> > I am a beginner of Perl. How do I convert and print the following strings
> > into a date format so that either the date is returned or "date not valid"
> > is printed.
> > Input data is:
> >
> > 792910171010163200
> > 552910171010163200
> > 552913171010163200
> > 552910171010163200
> > 552909171010163200
> > 552909171010163200
> >
> > For each of the data value, the output should like:
> >
> > 552910171010163200 Sat Nov 17 10:29:55 2001
> >
> > Here is some hint I read in the documentation, but still can't figure out
> > how to use it:
> >
> > The 552910171010163200 which is Sat Nov 17 10:29:55 2001,
> > (HINT: localtime) should be parsed into HH:MM:SS (Zero padded) and
> > WDay MMM DD, YYYY - which should look like Sat Nov 17, 2001
> > 55: 29: 10: 17:10: 101: 6: 320:0
> > HH:MM:SS:17:Nov: year (1900 +101= 2001):Sat: 320thday of the year
>
> Here is one way to do it:
>
> $ cat try.pl
> #!/usr/bin/perl -w
> use strict;
> use Time::Local qw(timelocal_nocheck);
>
> while ( <DATA> ) {
> chomp;
> my $date = timelocal_nocheck( unpack 'A2A2A2A2A2A3', $_ );
> if ( $_ eq join( '', localtime( $date ) ) ) {
Sorry, change the previous line to:
if ( $_ eq sprintf '%02d%02d%02d%02d%02d%03d%d%03d%d', localtime(
$date ) ) {
> print scalar localtime( $date ), "\n";
> }
> else {
> print "Date not valid.\n";
> }
> }
>
> __DATA__
> 792910171010163200
> 552910171010163200
> 552913171010163200
> 552910171010163200
> 552909171010163200
> 552909171010163200
>
> $ ./try.pl
> Date not valid.
> Sat Nov 17 10:29:55 2001
> Sat Nov 17 13:29:55 2001
> Sat Nov 17 10:29:55 2001
> Date not valid.
> Date not valid.
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]