developer tip

.NET에서 TimeSpan 곱하기

copycodes 2020. 9. 24. 07:57
반응형

.NET에서 TimeSpan 곱하기


C #에서 TimeSpan 개체를 어떻게 곱합니까? 변수 durationTimeSpan 이라고 가정하면 예를 들면 다음과 같습니다.

duration*5

그러나 "연산자 *는 TimeSpan 및 int 유형에 적용 할 수 없습니다"라는 오류가 발생합니다. 내 현재 해결 방법은 다음과 같습니다.

duration+duration+duration+duration+duration

그러나 이것은 정수가 아닌 배수로 확장되지 않습니다. duration * 3.5


이 기사에서

TimeSpan duration = TimeSpan.FromMinutes(1);
duration = TimeSpan.FromTicks(duration.Ticks * 12);
Console.WriteLine(duration);     

복사 및 붙여 넣기를 원하는 경우 :

namespace Utility
{
    public static class TimeSpanExtension
    {
        /// <summary>
        /// Multiplies a timespan by an integer value
        /// </summary>
        public static TimeSpan Multiply(this TimeSpan multiplicand, int multiplier)
        {
            return TimeSpan.FromTicks(multiplicand.Ticks * multiplier);
        }

        /// <summary>
        /// Multiplies a timespan by a double value
        /// </summary>
        public static TimeSpan Multiply(this TimeSpan multiplicand, double multiplier)
        {
            return TimeSpan.FromTicks((long)(multiplicand.Ticks * multiplier));
        }
    }
}

사용 예 :

using Utility;

private static void Example()
{
    TimeSpan t = TimeSpan.FromSeconds(30).Multiply(5);
}

t 150 초로 끝납니다.


TimeSpan구조에 대한 과부하 제공하지 않습니다 *당신이 자신을 할 필요가 있으므로, 연산자를 :

var result = TimeSpan.FromTicks(duration.Ticks * 5);

TimeSpan의 내부 데이터, 즉 틱을 사용할 수 있습니다.

TimeSpan day = TimeSpan.FromDays(1);
TimeSpan week = TimeSpan.FromTicks(day.Ticks * 7);

진드기 사용 :

http://www.personal.psu.edu/wbk2/blogs/personal_blog/dotnet-stuff-timespan-multiplication-and-division.html


TimeSpan.Multiply .NET Core에 도착했으며 .NET Standard 2.1에 도착할 것으로 보입니다.

https://docs.microsoft.com/en-us/dotnet/api/system.timespan.op_multiply?view=netstandard-2.1

   var result = 3.0 * TimeSpan.FromSeconds(3);

You need to specify which member it is you want to multiply by 5 -> TimeSpan.TotalMinutes * 5


The problem here is that you want to multiply timespan. The simplest workaround is to use ticks. eg.

 var ticks = TimeSpan.FromMinutes(1).Ticks;
 var newTimeSpan = TimeSpan.FromTicks(ticks*5);

참고URL : https://stackoverflow.com/questions/9909086/multiply-timespan-in-net

반응형