my $t = time; my $dow = (localtime $t)[6]; my $new_dow; do { $t -= 43200; # half a day, to counter Daylight Saving effects $new_dow = (localtime $t)[6]; } while $dow == $new_dow or 3 == abs(3-$new_dow); my @ymd = (localtime $t)[5,4,3]; $ymd[0]+=1900; $ymd[1]++; my $date = sprintf "%04d-%02d-%02d", @ymd;