前言:通过csv、excel或者txt文件获取的时间往往是string类型的,这时候如果需要对其操作就需要将其转换成datetime格式的,这里记录下使用DateTime.ParseExact对string格式的时间进行转换的心路历程
说明:如果是标准时间格式,直接使用DateTime.Parse(string dateTimeStr)即可,如果不是标注格式就需要通过DateTime.ParseExact对string格式的时间进行匹配转换了。
一、需求
可能出现的字符串时间格式:2022/10/19 0:00:03、2022/10/19 00:03、2022-10-19 0:00:03等,使用DateTime.ParseExact进行转换时往往会报错,提示说这种格式不是有效的datetime格式。
string aidunfeng = "2022/10/19 01:00:03";
DateTime dd = DateTime.ParseExact(aidunfeng, "yyyy/Mm/d h:m:s", CultureInfo.InvariantCulture);
DateTime.ParseExact()函数中第一个参数是要转换的时间格式字符串,第二个参数是匹配格式或转换后的样式,第三个参数是获取当前线程的区域信息。
CultureInfo.CurrentCulture获取当前线程的区域信息中,包括DateTimeFormat 日期显示格式(日期分隔符)和 NumberFormat 货币。
二、官网解释
时间格式字符串是什么样的,你第二参数就得是什么样的,否者就会出错, 当然有些是可以缩写的,这个下面说。
三、改
改下第二个参数看看可行否,没什么问题,第二个参数灵活性比较大,比如月,可以写一个M,也可以写两个MM,不过,一个M可以代表两位数,例如2022/2/19 01:02:03,也可以表示2022/12/19 01:02:03,如果用两个MM,那1-9月就必须使用01、02这种格式,1、2就会报错,同理日、时、分、秒都一样。