C#日期格式的设备输入

C#日期格式的设备输入,c#,io,C#,Io,我正在从通信端口上的设备读取输入,即将以下格式“dd/MM/yyyy hh:MM”的日期转换为字符串值。我正在尝试格式化日期以显示“ddMMyyyy hh:mm:ss”。我尝试了以下操作,但出现以下错误代码: (输入值为“31/08/2018 02:32”) 如果您有任何建议,我们将不胜感激。如果日期时间格式怪异,您需要使用DateTime.ParseExact(…)方法,如下所示: var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy

我正在从通信端口上的设备读取输入,即将以下格式“dd/MM/yyyy hh:MM”的日期转换为字符串值。我正在尝试格式化日期以显示“ddMMyyyy hh:mm:ss”。我尝试了以下操作,但出现以下错误代码:

(输入值为“31/08/2018 02:32”)


如果您有任何建议,我们将不胜感激。

如果日期时间格式怪异,您需要使用
DateTime.ParseExact(…)
方法,如下所示:

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

但是,您的格式是公认的ISO格式之一,因此它应该像您写的那样工作。is不起作用的最佳原因是,
input[0]
的值不是您期望的值,因此首先检查此变量实际包含的内容。

使用DateTime.TryParseExact检查“input[0]”是否具有有效的日期时间值。例如:

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);
}

感谢大家的评论和建议,我通过以下两种方法成功地做到了:

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


我假设
输入[0]
有一个有效值,可能存在重复。
行的值是多少?
?错误消息会准确地告诉您出了什么问题。查看
输入[0]
的值-编辑问题,向我们展示您的值。您使用的是什么文化?这是一种有效的英国时间格式,但如果您在世界其他任何地方,则可能无效(例如,在美国,预期格式为MM/DD/YYYY)。
var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
return $"{Action},{TagNum},{readerAddr},{dateTime:ddMMyyyy HH:mm:ss}";