Как я могу удалить эту проблему FormatException - PullRequest
0 голосов
/ 29 апреля 2020

Я написал код для преобразования строкового значения в значение TimeSpan. Иногда он имеет исключение FormatException не всегда. Обычно это работает хорошо.

Чтобы вычесть строку как время, я использовал DateTime.Parse для каждого значения строки.

TimeSpan timespan = DateTime.Parse(logs_temp[i + 1].time).Subtract(DateTime.Parse(logs_temp[i].time));

Это моя часть кода.

public class log
{
    [XmlElement("command")]
    public int command { get; set; }
    [XmlElement("param")]
    public int param { get; set;}
    [XmlElement("time")]
    public string time { get; set; }
}

 List<log> logs = logs_temp.ToList();

// logs and logs_temp have same command and param item. However add timespan bewteewn two commands in 
// time item
for (int i = 0; i <= logs_temp.Count - 1; i++)
{
    logs[i].command = logs_temp[i].command;
    logs[i].param = logs_temp[i].param;

    //Get a timespan between two sequencial command log
    if (i + 1 < logs_temp.Count)
    {   // I could find Format exception there
        TimeSpan timespan = DateTime.Parse(logs_temp[i + 1].time).Subtract(DateTime.Parse(logs_temp[i].time));

    //add second value as string but cannot
    logs[i].time = timespan.TotalSeconds.ToString();
    }
}

1 Ответ

0 голосов
/ 29 апреля 2020

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...