use DateTime::Format::SQLite; @ts = ( '2009-09-20 09:10:15', '2009-09-21 09:10:15', '2009-09-22 09:10:15', '2009-09-23 09:10:15', '2009-09-24 09:10:15', '2009-09-25 09:10:15', '2009-09-26 09:10:15', ); foreach my $ts (@ts) { my ($dt, $dow); $dt = DateTime::Format::SQLite->parse_datetime($ts); $dow = $dt->day_of_week; $dt->add(days => (1 - $dow)); print $dt->ymd('-'); print "\n"; }