DateTime.Parse пытается проанализировать его, используя текущую культуру P C. Если это не может, он выдаст исключение формата. Так что я думаю, что ваша строка времени иногда отличается. Поэтому установите точку останова для проверки.
Лучше всего будет использовать DateTime.TryParseExact или
dateString = "05/01/2009 01:30:42 PM -05:00";
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);