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

如何将DateTime转为时分字符串再转回,并输出指定时分格式?

问题分析与解决方案

你的问题核心在于DateTime类型本身必然包含日期和时间两部分,不存在仅存储时分的DateTime实例。当你用DateTime.Parse(v)解析"HH:mm"格式的字符串时,.NET会自动补充默认日期(通常是当前系统日期,也就是你看到的12/19/2022),而Console.WriteLine(Time)默认会输出完整的DateTime格式,因此带出了多余的日期信息。

针对你的需求,提供以下几种解决方案:

方案1:直接输出时分字符串(无需转回DateTime)

如果最终目的只是显示时分,完全不需要将字符串转回DateTime,直接输出之前生成的格式化字符串即可:

DateTime date = new DateTime(2008, 6, 6, 13, 34, 6);
string v = date.ToString("HH:mm");
Console.WriteLine(v); // 输出:13:34

方案2:转回DateTime后按需格式化输出

如果必须将字符串转回DateTime(比如后续有时间逻辑处理),只需在输出时重新指定"HH:mm"格式即可:

DateTime date = new DateTime(2008, 6, 6, 13, 34, 6);
string v = date.ToString("HH:mm");
DateTime time = DateTime.Parse(v);
Console.WriteLine(time.ToString("HH:mm")); // 输出:13:34

方案3:保留原日期的日期部分

如果希望转回的DateTime使用原数据的年月日(而非默认的当前日期),可以结合原日期构造新实例:

DateTime date = new DateTime(2008, 6, 6, 13, 34, 6);
string v = date.ToString("HH:mm");
// 先将时分字符串解析为TimeSpan
TimeSpan timeSpan = TimeSpan.Parse(v);
// 用原日期的年月日 + 解析得到的时分构造新DateTime
DateTime newDateTime = new DateTime(date.Year, date.Month, date.Day, timeSpan.Hours, timeSpan.Minutes, 0);
// 按需输出格式
Console.WriteLine(newDateTime.ToString("HH:mm")); // 输出:13:34
// 若输出完整格式,日期会保留原数据的2008-06-06
Console.WriteLine(newDateTime); // 输出:6/6/2008 1:34:00 PM

内容的提问来源于stack exchange,提问作者W25

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:25:40