标签: timespan

如何格式化TimeSpan几小时而不是几天

以下代码

Console.WriteLine("{0:%h} hours {0:%m} minutes", 
                   new TimeSpan(TimeSpan.TicksPerDay));
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

0小时0分钟

我想要的是这个输出:

24小时0分钟

我在这个格式字符串中缺少什么?

PS我知道我可以手动将TimeSpan分成几天和几小时,并将两者相乘,但宁愿使用自定义格式字符串,因为这些时间跨度显示在silverlight数据网格中,人们期待看到horus,而不是几天.

c# silverlight formatting timespan

9
推荐指数
2
解决办法
1万
查看次数

现在和下一个小时之间的时间跨度?

现在是8:30,我试图找出从现在到下一个整个小时(9:00)之间的秒数.我想我只是想DateTime.Now.AddHours(1)但在我这样做后,我认为我需要"地板".如何获得这个价值?

谢谢.

c# datetime timespan

9
推荐指数
4
解决办法
9248
查看次数

为什么timepan totalmilliseconds在整数和小数部分中具有相同的数字?

当计算两个DateTime对象之间的毫秒差异时,我似乎总是得到一个返回的数字,其中数字的小数部分与数字的整数分量相同.例如:1235.1235

为什么会这样?难道我做错了什么?这是语言的怪癖还是DateTime粒度的限制或其他什么?

这可以使用以下代码演示:

        DateTime then = DateTime.Now;
        Thread.Sleep(1234);
        DateTime now = DateTime.Now;
        TimeSpan taken = now - then;
        string result = taken.TotalMilliseconds.ToString(CultureInfo.InvariantCulture);
        //result = "1235.1235"
Run Code Online (Sandbox Code Playgroud)

由CodesInChaos评论:

DateTime`不准确到这个精度级别:参见C#DateTime.Now precision

但是 - 这并不能解释这种行为.

c# datetime timespan

9
推荐指数
1
解决办法
1820
查看次数

SSRS:在报告中汇总TimeSpan值

我有一个报告和一个数据源,其中一列是TimeSpan类型.我使用时Fields!TheTime.Value,TimeSpan值似乎在报告中正确显示,没有问题.

  • 7时02分00秒
  • 5时41分00秒

但是我想对这些值进行求和来得到一个组的总时间.在C#中,我当然可以做一个TimeSpan +另一个TimeSpan,所以我知道它们可以添加.我试过了

=Sum(Fields!TheTime.Value)
Run Code Online (Sandbox Code Playgroud)

但它最终会打印出很多类型.例如,对于上面输出的时间,我会得到457800000000总和.甚至应该是什么?

无论如何,我如何在报告中总结时间跨度值?对于上述时间跨度,我想最终12:43:00得到总和.除非我的脑袋再次在数学上失败了......但是你明白了:p

timespan sum reporting-services

8
推荐指数
1
解决办法
1万
查看次数

为什么10675199.02:48:05.4775807 TimeSpan CompilationSection的最大值?

我正在查看System.Web.Configuration.CompilationSection的元数据,并注意到该属性的以下属性TimeSpan BatchTimeout:

[TimeSpanValidator(MinValueString = "00:00:00", 
 MaxValueString = "10675199.02:48:05.4775807")]
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这是允许的最大值?TimeSpan本身有一个上限,为什么会有另一个值验证,为什么这个数字?

.net c# validation timespan

8
推荐指数
2
解决办法
7523
查看次数

c#中的Timespan交叉点

假设我有2个日期范围.

这些日期范围可以表示为时间跨度.

我想找到一个日期范围,在两个时间跨度内.

Range 1: 2/1/2011 - 8/1/2011 (timespan of 6 months)
Range 2: 5/2/2011 - 5/28/2011 (timespan of 26 days)
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,交叉点将是5/2/2011-5/28/2011,但是范围可以向任一方向移动(或者根本不相交)在这种情况下我希望得到的时间跨度为0长度)

最后,我需要生成交叉时间跨度的开始/结束的日历日期(不仅仅是刻度/小时/天等)

在c#3.0中有一种优雅的方法吗?

UPDATE

我使用了StriplingWarriors代码并创建了一个方法.

    private static DateRange GetIntersectionRange(DateRange range1, DateRange range2) {
        var iRange = new DateRange();
        iRange.From = range1.From < range2.From ? range2.From : range1.From;
        iRange.To = range1.To < range2.To ? range1.To : range2.To;
        if (iRange.From > iRange.To) iRange = null;
        return iRange;
    }
Run Code Online (Sandbox Code Playgroud)

.net c# timespan

8
推荐指数
1
解决办法
3875
查看次数

在LINQ查询中使用DateTime?.Value.TimeOfDay

我正在尝试使用ASP.NET MVC 3上的LINQ进行查询.

我有一个模型,我们称之为事件.此Event对象具有DateTime?的Date属性.我想要的是获取2个TimeSpans之间的事件.

现在我的代码如下所示:

TimeSpan From = new TimeSpan(8,0,0);
TimeSpan Until = new TimeSpan(22,0,0);

var events =
    from e in db.Events
    where e.Date.Value.TimeOfDay >= From,
          e.Date.Value.TimeOfDay <= Until
    select e;
Run Code Online (Sandbox Code Playgroud)

抛出异常,告诉我"LINQ to Entities中不支持指定的类型成员'TimeOfDay'."

我无法解决这个问题,而且我一整天都在努力.请帮助我,我很沮丧.:(

编辑:

我忘了在e.Date.Value之后写下"TimeOfDay".无论如何,我在我的代码中做了.

我无法使用DateTime,因为我必须过滤在一天的特定时间之间发生的事件,尽管事件的日期.

linq sql-server asp.net-mvc entity-framework timespan

8
推荐指数
1
解决办法
3880
查看次数

为什么System.TimeSpan不是XML可序列化的?

当我尝试将TimeSpan值存储到ApplicationData设置中时,我收到错误,因为无法序列化TimeSpan.这个问题显示了如何处理它:如何将TimeSpan序列化为XML

为什么TimeSpan不容易序列化?

并且,是否有无法序列化的数据类型列表?

c# serialization timespan xml-serialization

8
推荐指数
1
解决办法
7639
查看次数

c#TimeSpan将分钟转换为小时

我把分钟转换成小时.所以,如果我有minutes = 12534.结果应该是208:54.以下代码未能带来此结果.

TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = spWorkMin.ToString(@"hh\:mm");
Console.WriteLine(workHours);
Run Code Online (Sandbox Code Playgroud)

结果是16:54.

如何弄清楚?

c# timespan

8
推荐指数
2
解决办法
1万
查看次数

没有秒的TimeSpan.TotalMinutes

我正在使用代码

var minutesPassed = (DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes;
Run Code Online (Sandbox Code Playgroud)

计算两个日期之间经过的分钟数.我得到的结果看起来像

254.54445556

我得到分钟和秒钟.如何得到只包含这样的分钟的结果

254

c# datetime timespan

7
推荐指数
2
解决办法
9701
查看次数