I am looking to get yesterday's date in perl and it is proving unbelievably problematic. I need it to get a log file by name which I then have to parse. The parsing is fine, the date however has me driven around the bend. Any help will be great. I just need the date not the time.
Sorry here is my code so far, I have the date but I need to format it as ddmmyy. (eg the file is named ex040404.log.) I just know this is something simple.
( $yy, $mm, $dd ) = scalar localtime( ( time() - ( 24 * 60 *60 ) ) );
print "Date : ","$dd $mm $yy.\n\n";
I don't know how efficient this is, but it does work.
The $year += 1900 part is because the value of $year is actually the number of years since 1900 (so we need to add 1900 to it to get the correct year). The $month += 1 part is because the range returned for the month is 0..11, with 0 being January and 11 December (so you have to add 1 to it to make it accurate). The chomp( $day, $month, $year ); part is because, for some reason, the values seem to have superfluous whitespace on either side.
my ( $sec, $min, $hour, $day, $month, $year ) = localtime( time - (60 * 60 * 24) );
$year += 1900;
$month += 1;
chomp( $day, $month, $year );
print "The date is: ", $day, $month, $year, ".";
@timeAry contains 1..31, so format to 01..31
my @timeAry = localtime(time - (60*60*24));
my $filename = 'ex' . sprintf("\%02u",($today))
. sprintf("\%02u",($today-100)) . '.log';
@timeAry contains 0..11, so add 1 and format to 01..12
@timeAry contains 104..10n, so subrtact 100 and format 04..0n
Filename will now be 'exddmmyy.log'
EDIT: Added missing ')'
Last edited by Nedals; 10-29-2004 at 01:18 PM.
One might also use the Class::Date module.
“The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.”
—Tim Berners-Lee, W3C Director and inventor of the World Wide Web
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)