Ввод устройства C # в формате даты - PullRequest
0 голосов
/ 31 августа 2018

Я читаю ввод с устройства через коммуникационный порт, то есть дату в следующем формате «дд / мм / гггг чч: мм» в строковое значение. Я пытаюсь отформатировать дату, чтобы показать "ddMMyyyy чч: мм: сс". Я пробовал следующее, но получить код ошибки ниже:

(входное значение «31/08/2018 02:32»)

        public string ParseLine(string Line)
        {
            var input = Line.Split(',');
            var dateTime = DateTime.Parse (input[0]);
            var Action = input[1] == "1" ? "ONL" : "OFL";
            var readerAddr = input[1] == "1" ? "S" : "T";
            var TagType = input[2];
            var TagNum = input[3].Substring(TagType.Length);

            return $"{Action},{TagNum},{readerAddr},{dateTime:ddMMyyyy hh:mm:ss}";
        }

Любой совет будет оценен?

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Используйте DateTime.TryParseExact, чтобы проверить, имеет ли 'input [0]' допустимое значение datetime. Пример:

public string ParseLine(string Line)
{
   ...
   if(!DateTime.TryParseExact(input[0], "ddMMyyyy hh:mm:ss", CultureInfo.CurrentCulture, DateTimeStyles.None, out var result))
     {
         //Is not a valid date :C
     }

   Console.WriteLine("Valid date: " + result);
}
0 голосов
/ 02 сентября 2018

Благодаря всем комментариям и советам мне удалось сделать это правильно, используя эти два метода:

var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);

и

return $"{Action},{TagNum},{readerAddr},{dateTime:ddMMyyyy HH:mm:ss}";
0 голосов
/ 31 августа 2018

В случае, если время даты будет в каком-то странном формате, вам нужно будет использовать DateTime.ParseExact(..) метод, подобный этому:

var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy hh:mm");

Однако ваш формат является одним из принятых форматов ISO, поэтому он должен работать так, как вы записали. Лучшая причина, по которой это не работает, заключается в том, что значение input[0] не соответствует ожидаемому, поэтому сначала проверьте, что на самом деле содержит эта переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...