如何将DateTime.Now转换为24小时制?代码报错:无法转换string到TimeSpan
解决TimeSpan与字符串类型转换的报错问题
嘿,我来帮你搞定这个报错!咱们先搞清楚问题出在哪:你定义的time变量是TimeSpan类型(因为DateTime.TimeOfDay返回的就是TimeSpan),但time.ToString("HH:mm")会返回一个字符串,直接把字符串赋值给TimeSpan类型的变量,C#不允许这种隐式类型转换,所以就抛出了你看到的错误。
接下来给你两种解决方案,看你的实际需求来选:
方案1:保留TimeSpan变量,单独存储格式化后的字符串
如果你之后还需要对时间间隔做计算(比如加减时长),可以保留原来的TimeSpan变量,用新的字符串变量存24小时制的展示结果:
//获取当前日期和时间 DateTime dateTime = DateTime.Now; //日期 var date = dateTime.Date; //时间(TimeSpan类型,用于后续时间计算) var time = dateTime.TimeOfDay; //24小时制格式的时间字符串(用于展示) string formattedTime = time.ToString("HH:mm");
方案2:直接获取24小时制时间字符串(更简洁)
如果只是需要当前时间的24小时制字符串展示,完全可以一步到位,不用拆分日期和时间:
// 仅获取24小时制时间 string current24HourTime = DateTime.Now.ToString("HH:mm"); // 如果需要日期+24小时制时间的完整格式 string currentDateTime24 = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
补充个小知识点:TimeSpan本质是代表时间间隔,它的ToString方法只是把这个间隔格式化为可读字符串,并不会改变它的类型。所以如果有时间计算需求,一定要保留原TimeSpan变量,格式化只在需要展示的时候做就好。
内容的提问来源于stack exchange,提问作者jmsandiegoo
相关产品推荐
相关产品推荐

