asp.net 我有像125:45和35:45在文本框中的时间戳,需要找到这两个回答像90:00之间的差异[已关闭]

m0rkklqb  于 2022-12-24  发布在  .NET
关注(0)|答案(1)|浏览(119)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

2天前关闭。
Improve this question
文本框中有125:4535:45等时间戳。需要找出这两个在www.example.com C#中回答为90:00的时间戳之间的差异asp.net

pjngdqdw

pjngdqdw1#

不能使用TimeSpan.Parse,因为它要求"小时"部分介于0到23之间,"分钟"(或"秒")部分介于0到59之间。因此,您必须创建自己的Parse方法,但仍然可以使用TimeStamp结果。
简单的解析方法可以是(假设值为小时和分钟):

TimeSpan ParseHM(string hhmm)
{
    var sa = hhmm.Split(':');
    return TimeSpan.FromHours(int.Parse(sa[0]))
            .Add(TimeSpan.FromMinutes(int.Parse(sa[1])));
}

您可能希望添加一些检查,无效值现在将导致异常。

  • 没有:在访问sa[1]时给出IndexOutOfRangeException
  • 非整数部分("HH:MM")会产生FormatException
  • -将导致意外结果("-1:45"将被视为-0:15)

您可以像这样使用它:

var ts1 = ParseHM("125:45");
var ts2 = ParseHM("35:45");

var diff = ts1 - ts2;
Console.WriteLine($"{(int)diff.TotalHours}:{diff.Minutes:00}"); // prints "90:00"

这里需要使用TotalHours,因为它给出了一个表示整个TimeSpan(包括"天"和"分钟"等)的double值。
Minutes属性只给出Minutes部分(int),该部分被格式化为使用两位数,用0填充。

相关问题