- s/\s*\[[\.\d]+\]\s*\[[\.\d]+\]\s*$//;
- my $string = $_;
- my ($d1,$d2) = map {s/^\s*\*\s*//;
- UnixDate(ParseDate($_),'%s')
- } split /\s*-\s*/;
+ s/\s*\[[\.\d]+\]\s*\[[\.\d]+\]\s*$//;
+ my ($d1,$d2);
+ if (/\s*\*\s*CLOCK:\s+\[([^\]]+)\]--\[([^\]]+)\]/ or
+ /^\s*\*\s*(.+)?\s* - \s*(.+)?\s*$/
+ ) {
+ $d1 = UnixDate(ParseDate($1),'%s');
+ $d2 = UnixDate(ParseDate($2),'%s');
+ if (not defined $d1) {
+ die "Invalid date: $1";
+ }
+ if (not defined $d2) {
+ die "Invalid date: $2";
+ }
+ } else {
+ die "malformed line $_";
+ }
+ my $string = '* '.strftime('%A, %B %e, %H:%M:%S',localtime($d1)).' - '.
+ strftime('%A, %B %e, %H:%M:%S',localtime($d2));