Click to See Complete Forum and Search --> : Yesterday's Date
buggy
10-28-2004, 10:22 AM
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.
buggy
10-28-2004, 11:03 AM
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";
Paul Jr
10-28-2004, 12:34 PM
I don't know how efficient this is, but it does work.
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, ".";
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.
Nedals
10-29-2004, 01:16 AM
my @timeAry = localtime(time - (60*60*24));
my $filename = 'ex' . sprintf("\%02u",($today[3]))
. sprintf("\%02u",($today[4]+1))
. sprintf("\%02u",($today[5]-100)) . '.log';
@timeAry[3] contains 1..31, so format to 01..31
@timeAry[4] contains 0..11, so add 1 and format to 01..12
@timeAry[5] contains 104..10n, so subrtact 100 and format 04..0n
Filename will now be 'exddmmyy.log'
EDIT: Added missing ')'
Charles
10-29-2004, 04:35 AM
One might also use the Class::Date (http://hacks.dlux.hu/Class-Date/) module.
buggy
10-29-2004, 05:01 AM
thank you.