草庐IT

timespans

全部标签

c# - 在 .NET 中乘以 TimeSpan

如何在C#中乘以TimeSpan对象?假设变量duration是TimeSpan,我想,例如duration*5但这给了我一个错误“operator*cannotbeappliedtotypesTimeSpanandint”。这是我目前的解决方法duration+duration+duration+duration+duration但这不会扩展到非整数倍数,例如。持续时间*3.5 最佳答案 FromthisarticleTimeSpanduration=TimeSpan.FromMinutes(1);duration=TimeSpa

C# 4.0 : Can I use a TimeSpan as an optional parameter with a default value?

这两个都会产生一个错误,指出它们必须是编译时常量:voidFoo(TimeSpanspan=TimeSpan.FromSeconds(2.0))voidFoo(TimeSpanspan=newTimeSpan(2000))首先,有人能解释一下为什么这些值不能在编译时确定吗?有没有办法为可选的TimeSpan对象指定默认值? 最佳答案 您可以通过更改签名轻松解决此问题。voidFoo(TimeSpan?span=null){if(span==null){span=TimeSpan.FromSeconds(2);}...}我应该详细说明

Java 等价于 C# 的 TimeSpan

Java是否有表示一段时间的数据类型,例如34秒、5分钟等。我见过一些TimeSpan的实现,涵盖了从12月10日到12月11日这样的时间段。我需要的是C#中的TimeSpan之类的东西。 最佳答案 目前不是JDK的一部分,但将被纳入JDK7-试试JodaTime 关于Java等价于C#的TimeSpan,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/439903/

c# - 如何将 TimeSpan 格式化为几小时而不是几天

以下代码Console.WriteLine("{0:%h}hours{0:%m}minutes",newTimeSpan(TimeSpan.TicksPerDay));产生这个输出:0hours0minutes我想要的是这个输出:24hours0minutes我在这个格式字符串中遗漏了什么?附:我知道我可以手动将TimeSpan分解为天和小时,然后将两者相乘,但宁愿使用自定义格式字符串,因为这些时间跨度显示在silverlight数据网格中,人们希望看到的是horus,而不是天。 最佳答案 根据MSDN,使用%h会告诉你Thenum

c# - 将 TimeSpan 格式化为 mm :ss for positive and negative TimeSpans

我正在寻找.net3.5中的解决方案,我编写了以下工作解决方案:privatestringFormatTimeSpan(TimeSpantime){returnString.Format("{0}{1:00}:{2:00}",time但我的问题是:有没有更好的方法?也许在我不需要辅助函数的地方更短。 最佳答案 略短,使用CustomTimeSpanFormatStrings:privatestringFormatTimeSpan(TimeSpantime){return((time 关于

c# - C# 中的 TimeSpan "pretty time"格式

输入此问题的标题将我带到thisquestion.我正在寻找同样的东西,但如果你明白我的意思,可能不是静态格式的东西?我正在编写一个快速程序,它将获取两个DateTime对象的TimeSpan持续时间并将它们输出以打印到纸上。首选的格式是:XX天,YY小时,ZZ分钟(秒无关;天也是如此,因为我不希望时间跨度包含超过几个小时)。说出下面的代码(例如):DateTimestart=DateTime.Now;DateTimeend=DateTime.Now.AddMinutes(135);TimeSpanduration=(end-start);//outputdurationasXXhou

c# - 用年份格式化 TimeSpan

我有一个具有2个日期属性的类:FirstDay和LastDay。LastDay可以为空。我想生成"xyear(s)yday(s)"格式的字符串。如果总年份小于1,我想省略年份部分。如果总天数小于1,我想省略天部分。如果年或日为0,则应分别表示“日/年”,而不是“日/年”。示例:2.2年:             “2年73天”1.002738年:   “1年1天”0.2年:             “73天”2年:                “2年”我有什么作品,但是很长:privateconstdecimalDaysInAYear=365.242M;publicstringLen

.net - 格式化负 TimeSpan

我正在用.Net中的时间跨度做一些数学运算,有时总和会导致时间跨度为负。当我显示结果时,我无法将其格式化为包含否定指示符。DimtsasNewTimespan(-10,0,0)ts.ToString()这将显示“-10:00:00”,这很好,但我不想显示秒,所以试试这个。ts.ToString("hh\:mm")这将返回“10:00”并从前面删除了“-”,这是问题的症结所在。我目前的解决方案是这样的:If(ts但我希望只使用格式字符串来完成同样的任务。 最佳答案 我在TimeSpan.ToString(...)上使用了.NetRef

c# - 格式化 TimeSpan 大于 24 小时

假设我将一些秒转换为TimeSpan对象,如下所示:Dimsec=1254234568DimtAsTimeSpan=TimeSpan.FromSeconds(sec)如何将TimeSpan对象格式化为如下格式:>105hr56mn47sec有内置函数还是需要写自定义函数? 最佳答案 嗯,最简单的做法是自己格式化,例如returnstring.Format("{0}hr{1}mn{2}sec",(int)span.TotalHours,span.Minutes,span.Seconds);在VB中:PublicSharedFuncti

c# - 在 DataGridView 列中格式化 TimeSpan

我见过thesequestions但两者都涉及CellStyleFormat值中不可用的方法。我只想显示小时和分钟部分(16:05);不是秒数(16:05:13)。我尝试将秒值强制为零,但仍然得到类似16:05:00的结果。没有使用像提供字符串或DateTime(并且只显示小时/分钟部分)这样的组合,有什么方法可以让我做我想做的格式化。 最佳答案 这是我自己发现的。不幸的是,解决方案非常复杂。好消息是它有效。首先,您需要一个处理TimeSpan值的ICustomFormatter实现。.NET框架不包括这种开箱即用的类型;我猜测这是