标签: timespan

使用单线程的Sum TimeSpan数组?

有没有办法将多个聚合聚合到一个时间跨度?

Dim times = { 
  New TimeSpan(1, 0, 0),
  New TimeSpan(1, 10, 0),
  New TimeSpan(1, 50, 0),
  New TimeSpan(0, 20, 0),
  New TimeSpan(0, 10, 0)
}

Dim sum As New TimeSpan
For Each ts In times
  sum = sum.Add(ts)
Next

'That's what I desire:
sum = times.Sum
sum = times.Aggregate
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些我不知道的内置功能.

更新 请阅读我对Reed Copsey答案的评论.

.net extension-methods timespan aggregate accumulate

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

划分两个TimeSpans以获得系数

举个例子:

我们需要计算音频专辑播放进度条的子部分的大小.专辑中的每个曲目的长度都表示为TimeSpan值.专辑的总长度也是TimeSpan.

我需要计算每张曲目与整张专辑相比有多长的重量,所以我可以分别在进度条上绘制它.

我知道不可能将两个TimeSpan变量分开,所以我试图划分.Ticks.

long coeff = curTrackLength.Ticks / _totalLength.Ticks;
Run Code Online (Sandbox Code Playgroud)

这样的划分总是导致0.我需要更精确的值.如何实现更精确的计算?

环境是适用于Windows Phone Mango的Silverlight.

.net c# timespan division

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

为什么TimeSpan字符串格式化会解析为异常?

我在c#MVC2项目中有以下代码行:

string.Format(@"{0\:HH\:mm}", new TimeSpan(0))
Run Code Online (Sandbox Code Playgroud)

此行导致以下异常:

System.FormatException: Input string was not in a correct format.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么?我正在使用C#,asp.net,mvc2和.net framework 4

c# timespan .net-4.0 string-formatting asp.net-mvc-2

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

计算从时间跨度的总夜晚时间

假设夜间时间设定为20.30h至6.15h(AM).这两个参数是用户范围的变量.假设您的到达日期和出发日期可以从几分钟到一天以上.你如何计算夜晚的总小时数?

public static double CalculateTotalNightTimeHours(DateTime arrival, 
                                                  DateTime departure,
                                                  int nightTimeStartHour, 
                                                  int nightTimeStartMinute, 
                                                  int nightTimeEndHour, 
                                                  int nightTimeEndMinute)
{ 
    //??
}
Run Code Online (Sandbox Code Playgroud)

编辑:我明白这可能不是直接的肯定/没有答案,但也许有人有一个优雅的解决方案来解决这个问题.回答评论:我确实想要计算用户可编辑的夜间开始和结束时间之间的总小时数(或分钟数).我正在计算访问时间,第一个日期确实是到达参数.

我的代码是:

DateTime nightStart = new DateTime( departure.Year, departure.Month, departure.Day,
                                    nightTimeStartHour, nightTimeStartMinute, 0);
DateTime nightEnd = new DateTime( arrival.Year, arrival.Month, arrival.Day,
                                  nightTimeEndHour, nightTimeEndMinute, 0);
if (arrival < nightEnd)
{
    decimal totalHoursNight = (decimal)nightEnd.Subtract(arrival).TotalHours;
}
//...
Run Code Online (Sandbox Code Playgroud)

.net c# datetime timespan winforms

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

EntityFunctions.DiffHours方法如何工作?

我在文档中找不到任何解释此方法细节的内容.因为它总是返回一个整数,所以它不区分3:20的时差和3:10的时差.但它是向上舍入还是向下舍入,还是只比较2倍的小时部分?

示例:OpenTime = 2014-06-12 13:35:00.000 CloseTime = 2014-06-13 14:30:00.000

实际差异是24小时55分钟.这会返回24小时或25小时的差异吗?

我需要确定2次是否相隔25小时或更长时间; 我可以使用DiffHours,还是需要使用DiffSeconds并将结果除以3600以获得实际小时数?

.net datetime entity-framework timespan

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

解析字符串包含一天中的时间

我尝试将字符串转换为时间跨度,但我得到以下异常:

输入字符串的格式不正确.

我的代码:

rad_from_time.SelectedTime = TimeSpan.Parse(pro[0].FromTime)
Run Code Online (Sandbox Code Playgroud)
pro[0].FromTime = "9:30 AM";
Run Code Online (Sandbox Code Playgroud)

c# asp.net string timespan exception

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

将TimeSpan添加到DateTime不起作用

我想在DateTime中添加新的时间值

我在Watch中的代码:

tsStart {09:00:00}  System.TimeSpan
StartDateTime   {10/17/2014 12:00:00 AM}    System.DateTime
Run Code Online (Sandbox Code Playgroud)

用于将TimeSpan添加到DateTime的c#代码:

StartDateTime.Add(tsStart);
Run Code Online (Sandbox Code Playgroud)

添加后Watch中的值

StartDateTime   {10/17/2014 12:00:00 AM}    System.DateTime
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# datetime timespan

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

在RDLC报告中总结时间

在我的RDLC报告中,我显示了员工的工作时间.

我想总结一下每个员工的时间.我使用可空的timeSpan类型返回记录集中的工作时间,并在报告中将它们格式化为hh:mm,如下所示:

7:30   
4:45  
5:30  
7:30  
7:30
Run Code Online (Sandbox Code Playgroud)

已经有大约在同一问题提出许多其他问题,比如这个, 这个,但没有似乎有一个可以接受的答案.

这个问题几乎就是我想要的.除了显示日,小时,分钟,秒.
但是我的用户只想要总小时和分钟,没有天,即在这种情况下我希望看到32小时45分钟.

7:30   
4:45  
5:30  
7:30  
7:30

---------
Total:    32:45
Run Code Online (Sandbox Code Playgroud)

我尝试了以下公式,但我得到了#error:

=TimeSpan.FromMinutes(Sum(Fields!Hours.Value))
Run Code Online (Sandbox Code Playgroud)

而且:

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

这个给了我几天,几小时,几分钟......所以很接近,但我只需要总数......:

=TimeSpan.FromTicks(Sum(Fields!Hours.Value))
Run Code Online (Sandbox Code Playgroud)

这可能吗 ?

c# timespan rdlc visual-studio-2013

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

TimeSpan转换

我想将分钟转换为秒,此刻我遇到了问题,因为在分钟文本框中,当我输入1.50时,结果为90秒,这是错误的,因为1.30 = 90秒

    private void MtoCbutton_Click(object sender, EventArgs e)
    {
        if (minTosecTextBox.Text != "Minutes")
        {
            minutes = Convert.ToDouble(minTosecTextBox.Text);
            TimeSpan span = TimeSpan.FromMinutes(minutes);
            resultSectextBoxtextBox.Text = span.TotalSeconds.ToString();
        }

        else
        {

            MessageBox.Show("Please enter Minutes");
        }
Run Code Online (Sandbox Code Playgroud)

c# timespan minute seconds

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

从ISO 8601持续时间获取DateTime对象

在PowerShell中,是否可以将ISO 8601指定持续时间转换 DateTime对象?例如,PT30M是30分钟前,所以如果现在是2019-07-31 17:00:00我想要的时间戳记2019-07-31 16:30:00

我已经尝试过显而易见的-

"PT30M" | Get-Date
Run Code Online (Sandbox Code Playgroud)

但这(毫不奇怪地失败了)

Get-Date:输入对象不能绑定到该命令的任何参数,因为该命令不接受管道输入,或者该输入及其属性与接受管道输入的任何参数都不匹配。

我的下一个想法是编写一个将提取天,小时和分钟的函数(例如,最多最多30天)。为此,下面的函数可以$startTime根据$Duration传入的内容工作并创建。

但是,感觉有点不对劲。首先,正则表达式只非常具体地检查几天,几分钟和几小时,而其余的$Duration可能完全是垃圾。其次,一旦考虑到诸如秒,周和月之类的事情,那将很麻烦。

是否有内置的方法来执行此操作,还是在最佳选项下坚持使用该功能?

function Get-TimespanFromDuration
{
    param(
        [Parameter(Mandatory)]
        [string]$Duration
    )

    $now = (Get-Date).ToUniversalTime()
    $dataTimeAgo = @{ "Days" = 0; "Hours" = 0; "Minutes" = 0 }

    ### Work out how may days ago.
    $daysAgo = $Duration -match "\D([1-9]|[1-2][0-9]|30)D"
    if ($daysAgo)
    {
        [int]$dataTimeAgo["Days"] = $matches[0] -replace "\D+"
    }

    ### Work out how may …
Run Code Online (Sandbox Code Playgroud)

powershell datetime timespan iso8601

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