我正在从通信端口上的设备读取输入,即以下格式“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 回答
翻过高山走不出你
TA贡献1875条经验 获得超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);
}
一只斗牛犬
TA贡献1784条经验 获得超2个赞
感谢大家的评论和建议,我通过使用这两种方法设法做到了正确:
var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
和
return $"{Action},{TagNum},{readerAddr},{dateTime:ddMMyyyy HH:mm:ss}";
陪伴而非守候
TA贡献1757条经验 获得超8个赞
如果日期时间采用某种奇怪的格式,您将需要使用这样的DateTime.ParseExact(..)方法:
var dateTime = DateTime.ParseExact(input[0], "dd/MM/yyyy hh:mm");
但是,您的格式是可接受的 ISO 格式之一,因此它应该像您写的那样工作。is 不起作用的最好原因是 的值input[0]不是您期望的,因此首先检查此变量实际包含的内容。
- 3 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消
