You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:36:52