为了账号安全,请及时绑定邮箱和手机立即绑定

C# 设备输入日期格式

C# 设备输入日期格式

C#
繁花如伊 2021-12-25 16:47:08
我正在从通信端口上的设备读取输入,即以下格式“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);

}


查看完整回答
反对 回复 2021-12-25
?
一只斗牛犬

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


查看完整回答
反对 回复 2021-12-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

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

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

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


查看完整回答
反对 回复 2021-12-25
  • 3 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号