首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理负时间跨度

处理负时间跨度
EN

Stack Overflow用户
提问于 2009-06-19 23:38:01
回答 9查看 69.7K关注 0票数 43

在网格的输出中,我计算一个TimeSpan并获取它的TotalHours。例如:

代码语言:javascript
运行
复制
(Eval("WorkedHours") - Eval("BadgedHours")).TotalHours

我们的目标是将TotalHours显示为39:44,因此我需要将值从7.5转换为07:30。这没问题..。除非它是阴性的!

我可以使用以下命令从Hours创建一个TimeSpan对象

代码语言:javascript
运行
复制
TimeSpan.FromHours( (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours)

如果该值为负,则无法将其转换为DateTime以使用.ToString("HH:mm")方法,并且TimeSpan对象不支持该格式字符串。

EN

回答 9

Stack Overflow用户

发布于 2011-11-28 06:37:44

不是有TimeSpan.Duration方法吗?我认为这将处理您正在尝试做的事情。

票数 95
EN

Stack Overflow用户

发布于 2009-06-19 16:14:41

代码语言:javascript
运行
复制
static string ToHMString(TimeSpan timespan) { 
    if (timespan.Ticks < 0) return "-" + ToHMString(timespan.Negate());

    return timespan.TotalHours.ToString("#0") + ":" + timespan.Minutes.ToString("00");
}

Console.WriteLine(ToHMString(TimeSpan.FromHours(3)));       //Prints "3:00"
Console.WriteLine(ToHMString(TimeSpan.FromHours(-27.75)));  //Prints "-28:45"

如果timespan超过24小时,也可以正常工作。

票数 11
EN

Stack Overflow用户

发布于 2009-06-19 15:41:45

只需将其乘以-1或使用绝对值函数。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1018643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档