c# - 上午/下午到时间跨度

标签 c# datetime timespan

我想实现 this 的逆过程,也就是说,我想将格式为 hh:mm ttstring 转换为秒数为零的 TimeSpan

例如,09:45 pm 转换为 21:45:00

最佳答案

最简单的方法可能是使用 DateTime.ParseExact 将其解析为 DateTime,然后使用 TimeOfDay精确 TimeSpan

DateTime dateTime = DateTime.ParseExact(text,
                                    "hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;

当您指定 am/pm 指示符时,在多个小时中看到前导 0 是很奇怪的。您可能希望在格式字符串中使用“h”而不是“hh”,以允许使用“9:45 pm”而不是“09:45 pm”。

(我还认为,首先是 TimeSpan 的一种奇怪用法,但在我看来,.NET 日期/时间类型有些困惑。我建议使用Noda Time ,但我有偏见 :)

关于c# - 上午/下午到时间跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553738/

相关文章:

c# - 无法将类型 'int?' 隐式转换为 'int' - 无论是在 Controller 上还是在 View 页面上

javascript - 保存到变量时循环获取上一个数字

javascript - 使用 moment.js 和 moment-timezone.js 从不同时区的日期中减去 1 天

android - 时间跨度 至 UTC 毫秒

c# - 没有秒数的 TimeSpan.TotalMinutes

.net - 为什么 TimeSpan.FromSeconds(double) 四舍五入到毫秒?

c# - JavaScript 无法加载

C#队列对象入队后在队列中修改

c# - 使用 Process.Start(),当/K 参数不起作用时如何保持 cmd 提示符打开?

java - unix 时间 - 在 Java 中计算当前小时