如何将Access数据库中的日期时间格式读取为仅日期格式
解决Access数据库日期读取为仅日期格式的问题
嘿,我来帮你搞定这个日期读取的问题!先看看你之前写的两种代码为啥没生效:
第一种代码的问题
你先把DataReader里的日期字段转成字符串,再用TryParse转回DateTime,这属于多此一举的无效转换。而且ToString()的输出格式会受系统区域设置影响,万一Access返回的字符串格式和当前系统的解析规则不匹配,TryParse就可能解析失败,最后得到的自然不是你想要的短日期。
第二种代码的问题
这里有个明显的编译问题:dataRead["Date required"]返回的是object类型,它并没有带格式参数的ToString(string)方法,你直接这么写代码根本跑不起来,更别说得到正确结果了。
正确的解决方案
其实Access里的日期时间字段存储的是标准的DateTime类型,数据库里的“短日期”设置只是显示层面的,读取的时候我们直接拿原始的DateTime对象就行,不用绕弯子解析字符串。
推荐两种靠谱的写法:
写法1:用DataReader的GetDateTime方法(更安全,支持空值判断)
// 先检查字段是否为空,避免空值引发异常 int dateColumnIndex = dataRead.GetOrdinal("Date required"); if (!dataRead.IsDBNull(dateColumnIndex)) { DateTime dueDate = dataRead.GetDateTime(dateColumnIndex); // 直接转成短日期字符串,或者自定义格式如"dd/MM/yyyy" list.Add(new YourListItemClass { DueDate = dueDate.ToShortDateString() }); }
写法2:直接强转(适合确定字段不会为空的场景)
// 确保字段不为DBNull的情况下,直接强转成DateTime DateTime dueDate = (DateTime)dataRead["Date required"]; // 自定义格式输出你想要的日期样式 list.Add(new YourListItemClass { DueDate = dueDate.ToString("dd/MM/yyyy") });
这样就能直接拿到正确的日期对象,再转成你需要的仅日期格式字符串,比之前的Parse方式靠谱多啦!
内容的提问来源于stack exchange,提问作者Karthick
相关产品推荐
相关产品推荐

