Naith,
You do like your complicated formulas don't you,
I would have used :
StringVar StrTime :=
{StringField};
StringVar StrTime1 := Left(StrTime,instr(StrTime,"-"

-1);
StringVar StrTime2 := Mid(StrTime,instr(StrTime,"-"

+1);
TimeVar Time1 := If Len(StrTime1) in [4,6] then
time(picture(StrTime1,"xx:xxxx"

) else
If Len(StrTime1) in [3,5] then
time(picture(StrTime1,"0x:xxxx"

);
TimeVar Time2 := If Len(StrTime2) in [4,6] then
time(picture(StrTime2,"xx:xxxx"

) else
If Len(StrTime2) in [3,5] then
time(picture(StrTime2,"0x:xxxx"

);
DateDiff("s",CurrentDate+Time1,CurrentDate+Time2)
to get the difference in seconds.
The Time() will allow AM or PM as a valid Time string and the Picture() function will allow the last 2 x in "xx:xxxx" to not exist. The only possible problem was the leading 0 not being there for 125, but :
Len("125"

= 3
Len("0125"

= 4
Len("125PM"

= 5
Len("0125PM"

= 6
Reebo
Scotland (Sunny with a Smile)