标签: timespan

TimeSpan的自定义字符串格式

我想以这种方式在C#中格式化TimeSpans:

xxx天(s)yyy hours(s)zzz minute(s)

条件:

  1. 额外秒应该被截断

  2. day(s)是我想要的最大单位.我想34天出现34天而不是1个月4天等.

  3. 如果时间跨度不到一天,我不希望这一天显示出来.同样,如果跨度小于1小时,我只想显示分钟部分.

有没有什么办法可以使用内置格式字符串来做到这一点,或者除了编写自己的函数之外别无他法?

编辑:目前使用我自己的功能.它需要TimeSpan在几分钟内作为输入(TimeSpan.TotalMinutes):

private static string GetTimeStringFromMinutes(double p)
        {
            var minutes = (int) p;
            int hours = minutes / 60;
            minutes = minutes % 60;
            int days = hours/24;
            hours = hours%24;
            string dayPart = days + " day(s) ";
            string hoursPart = hours + " hour(s) ";
            string minutesPart = minutes + " minute(s)";
            if (days != 0)
                return (dayPart + hoursPart + minutesPart);
            if (hours != 0)
                return (hoursPart …
Run Code Online (Sandbox Code Playgroud)

.net c# timespan date-format

4
推荐指数
2
解决办法
5357
查看次数

TimeSpan中有错误吗?

这将输出"0":

TimeSpan span = TimeSpan.Zero;
span.Add(TimeSpan.FromMinutes(5));
Console.WriteLine(span.TotalSeconds);   -----> 
Run Code Online (Sandbox Code Playgroud)

但是,这将输出"300":

TimeSpan span = TimeSpan.Zero.Add(TimeSpan.FromMinutes(5));
Console.WriteLine(span.TotalSeconds);   -----> 
Run Code Online (Sandbox Code Playgroud)

这是一个已知的错误?

c# timespan

4
推荐指数
1
解决办法
1561
查看次数

计算年,月,周和日

在我的应用程序中,用户输入两个日期.计划的开始日期和计划的结束日期.我们必须采用这些日期,并根据差异填充4个字段.

所以,让我们说他选择2010年1月1日作为开始,2011年3月2日作为结束,我们需要最终:

年:1个月:2周:0天1

意思是总持续时间为1年,2个月和1天.

有这样做的标准方法吗?或者我是否需要编写一个具有很多非常棘手的逻辑的方法来解决它?我希望我很幸运,并且会有一个date-diff类型.Net类可用.

.net c# timespan date

4
推荐指数
3
解决办法
2万
查看次数

最有效的方式代表时间段

我需要花一段时间,例如一周,然后将其分解为几天,然后再进一步分为几小时,30分钟,15分钟等.

然后我希望能够将(可能是多个)人分配给那些时间跨度.

例如

2012年5月30日

0700:0730 - 爱丽丝,鲍勃

07:30:0800 - 爱丽丝

....:....

1930:2000年 - 爱丽丝

2012年5月31日

0700:0730 - 卡罗尔

0730:0800 - 卡罗尔

....:....

1930:2000年 - 卡罗尔

每天的开始时间和结束时间是可定制的.

我需要能够对工作时段进行排序并查询它们以查看是否有任何人没有分配给他们.检查一天/周,没有人被分配到> x小时.

我知道.Net有TimeSpan和DateTime但这些似乎很麻烦,因为它看起来像是一些数据的简单表示而且TimeSpan没有StartTime,它纯粹只是一段时间(例如30分钟,5分钟,1小时等) ).

我最初的想法是创建一个名为WorkingDay的类,一个WorkingDay可以有许多WorkingPeriods.一个WorkingPeriod有一个StartTime和EndTime以及一个分配给该WorkingPeriod的人员列表,其中包含AddPerson和RemovePerson的简单方法.

WorkingDay将通过运行WorkingPeriods并拉出所有分配给任何时期的独特人员来获取当天分配的人员列表.它还有一个函数可以在没有指定的情况下拉出所有的WorkingPeriods.

这似乎太麻烦了!特别是因为我需要其他一些需要花费大量工作日并且检查某人在多天内分配的总时间少于x小时等的事情.

对此有何良好结构的建议?他们现有的.Net结构是否会提供我所遗漏的内容?

c# datetime timespan

4
推荐指数
1
解决办法
8645
查看次数

TimeSpan进入Microseconds?

如果可以在C#中使用TimesSpan打印microsencods,请再次问我的问题.

我有下一个例子:

DateTime startTime = DateTime.Now;
..../some code
DateTime endTime = DateTime.Now;
TimeSpan totalTimeTaken = endTime.Subtract(startTime);
Label3.Text=(totalTimeTaken.Milliseconds).ToString();
Run Code Online (Sandbox Code Playgroud)

这段代码允许我以毫秒显示,但我需要显示微秒是否有办法将其更改为微秒或我是否必须使用其他东西?

我必须编辑我的问题:我的目标是测量2 DateTime之间花费的时间,因为它只是很少的代码行,毫秒不会削减它,这就是我需要微秒的原因.

c# datetime timespan

4
推荐指数
1
解决办法
8825
查看次数

Timespan不接受MVC3中的一天

我有一个MVC3应用程序,其中我想设置一个时间跨度,例如2天和5小时.当我输入02:05:00:00时,它给了我以下例外:

System.OverflowException: SqlDbType.Time overflow.  Value '2.05:00:00' is out of range.  Must be between 00:00:00.0000000 and 23:59:59.9999999.
Run Code Online (Sandbox Code Playgroud)

当我输入05:00:00时,它正确地将5小时保存到数据库中.根据MSDN timespan有一天属性.我如何正确设置日期?

模型:

public class ProductionTimeVM
{        
    [Required]
    public TimeSpan DefaultTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我只是使用:

@Html.TextBoxFor(x => x.DefaultTime)
Run Code Online (Sandbox Code Playgroud)

对于我的控制器:

public ActionResult SaveProductionTime(ProductionTimeVM vm)
{           
   ProductionTime productionTime = new ProductionTime();
   productionTime.Default = vm.DefaultTime;

   //some more code
 }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# timespan asp.net-mvc-3

4
推荐指数
1
解决办法
1328
查看次数

TimeSpan.ParseExact()对于明显有效的格式返回false

为什么这段代码返回false?这个问题/答案 强烈暗示它应该返回true.

TimeSpan.TryParseExact("04:00:01", "hh:mm:ss", CultureInfo.CurrentCulture, out x);
Run Code Online (Sandbox Code Playgroud)

使用InvariantCulture也返回false并TimeSpan.ParseExact()抛出无效的格式异常.HH:mm:ss根据上述问题,这是错误的.

如何04:00:01打破格式hh:mm:ss

c# timespan

4
推荐指数
1
解决办法
1686
查看次数

C#:如何将TimeSpan值转换为double?

如何将TimeSpan值转换为doubleC#中的值?

我的意思是我有这个-08:15:00,我想要一个双-08.15.

.net c# double datetime timespan

4
推荐指数
3
解决办法
2万
查看次数

Timespan(0,0,secs)或Timespan.FromSeconds(secs)

Timespan(0,0,secs)和之间的返回值是否有差异Timespan.FromSeconds(secs)

在我看来,区别在于FromSeconds接受了double.

c# timespan seconds

4
推荐指数
1
解决办法
4781
查看次数

无法隐式转换'System.TimeSpan?' 到'System.TimeSpan'

以下代码工作正常:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);
int d3 = (int)(d1 - d2).TotalDays;
Run Code Online (Sandbox Code Playgroud)

但是,如果我定义DateTimeDateTime?:

DateTime? d1 = DateTime.Now;
DateTime? d2 = DateTime.Now.AddDays(-1);
int d3 = (int)(d1 - d2).TotalDays;
Run Code Online (Sandbox Code Playgroud)

带下划线的红色错误

无法隐式转换'System.TimeSpan?' 到'System.TimeSpan'

是否可以获得定义为可为空的两个日期时间之间的天数差异?

c# datetime timespan asp.net-mvc-5

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