I had a need to create a set of directories - one per day. Normally I would use the date in ISO format: YYYY-MM-DD since it naturally sorts in date order. However for this particular application, I wanted reverse order - most recent date at the top, older and progressively less interesting dates following.
This routine generates a directory name based on a unix timestamp value (default 'today'), that includes a sort code prefix to force reverse date ordering:
sub day_dir { my($day, $month, $year) = (localtime(shift || time))[3,4,5]; my @sym = ('1'..'6', 'A'..'Z'); my $code = $sym[(138 - $year) & 31] . $sym[(11 - $month) & 15] . $sym[(31 - $day) & 31]; return sprintf('%s-%04u-%02u-%02u', $code, $year + 1900, $month + +1, $day); }
Sample output:
WFY-2010-01-01 X11-2009-12-31 X2Y-2009-11-01 X3C-2009-10-23
You could adapt it to put the day of the week ('Mon', 'Tue', 'Wed' ...) or indeed anything you like, after the sort code.
In reply to Reverse Date Sorted Directory Names by grantm
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |