我正在从通信端口上的设备读取输入,即日期,其格式为“ 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}";
}
有什么建议会受到赞赏吗?
答案 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);