C#技术问题:如何判断DateTime是否包含非默认午夜的时间部分
如何验证DateTime是否包含实际时间(非默认午夜00:00:00)
要判断一个DateTime对象是否包含实际时间(不是默认的午夜00:00:00),核心思路就是检查它的TimeOfDay属性是否等于TimeSpan.Zero——因为午夜时分的时间跨度就是0。
示例解析代码
先看你给出的DateTime解析场景:
DateTime.TryParse("2022-11-01T14:52:17", out DateTime withTime1); // 包含时间 DateTime.TryParse("2022-11-01T00:00:01", out DateTime withTime2); // 包含时间 DateTime.TryParse("2022-11-01T00:00:00", out DateTime noTime ); // 不包含时间
验证逻辑实现
可以直接用一行代码判断,也可以封装成复用方法:
直接判断写法
// 验证withTime1 bool hasActualTime1 = withTime1.TimeOfDay != TimeSpan.Zero; // 返回true // 验证withTime2 bool hasActualTime2 = withTime2.TimeOfDay != TimeSpan.Zero; // 返回true // 验证noTime bool hasActualTime3 = noTime.TimeOfDay != TimeSpan.Zero; // 返回false
封装成复用方法
public static bool HasActualTime(DateTime dateTime) { return dateTime.TimeOfDay != TimeSpan.Zero; } // 调用示例 bool result1 = HasActualTime(withTime1); // true bool result2 = HasActualTime(withTime2); // true bool result3 = HasActualTime(noTime); // false
补充说明
这个逻辑能覆盖所有场景:只要DateTime的时分秒任意一项不为0,TimeOfDay就会大于TimeSpan.Zero,都会被判定为包含实际时间,完全匹配你给出的示例需求。
内容的提问来源于stack exchange,提问作者YMH
相关产品推荐
相关产品推荐

