C# 设备输入日期格式

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


(输入值为“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}";

        }

任何建议将不胜感激?


繁花如伊
浏览 225回答 3
3回答

翻过高山走不出你

使用 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);和return $"{Action},{TagNum},{readerAddr},{dateTime:ddMMyyyy HH:mm:ss}";

陪伴而非守候

如果日期时间采用某种奇怪的格式,您将需要使用这样的DateTime.ParseExact(..)方法:var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy hh:mm");但是,您的格式是可接受的 ISO 格式之一,因此它应该像您写的那样工作。is 不起作用的最好原因是 的值input[0]不是您期望的,因此首先检查此变量实际包含的内容。
打开App,查看更多内容
随时随地看视频慕课网APP