日期格式的C#设备输入

时间:2018-08-31 11:20:17

标签: c# io

我正在从通信端口上的设备读取输入,即日期,其格式为“ 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}";
        }

有什么建议会受到赞赏吗?

3 个答案:

答案 0 :(得分:1)

使用DateTime.TryParseExact来检查'input [0]'是否具有有效的datetime值。示例:

ab.toCharArray.map(x => if ("aeiou".indexOf(x) >= 0) x else ' ')

答案 1 :(得分:0)

如果日期时间采用某种奇怪的格式,则需要使用DateTime.ParseExact(..)这样的方法:

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

但是,您的格式是公认的ISO格式之一,因此它应该像您写下来一样工作。不能正常运行的最佳原因是input[0]的值不是您期望的值,因此首先请检查此变量实际包含的内容。

答案 2 :(得分:0)

感谢大家的评论,并建议我通过以下两种方法设法使它正确:

"stackoverflow (python OR ruby) -tweepy"

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