using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.Common.Aitex.Core.RT.EMS
{
public static class DateTimeHelper
{
///
/// result = b - a(b > a) unit = min or hour or day
///
///
///
///
///
public static double DateTimeSubtraction(DateTime timea,DateTime timeb, TimeUnit unit)
{
switch (unit)
{
case TimeUnit.Seconds:
return DiffSeconds(timea, timeb);
case TimeUnit.Minutes:
return DiffMinutes(timea, timeb);
case TimeUnit.Hours:
return DiffHours(timea, timeb);
case TimeUnit.Days:
return DiffDays(timea, timeb);
case TimeUnit.Months:
case TimeUnit.Years:
default:
return -1;
}
}
public static double DiffSeconds(DateTime startTime, DateTime endTime)
{
TimeSpan sSpan = new TimeSpan(endTime.Ticks - startTime.Ticks);
return Math.Round(sSpan.TotalSeconds, 0);
}
public static double DiffMinutes(DateTime startTime, DateTime endTime)
{
TimeSpan minuteSpan = new TimeSpan(endTime.Ticks - startTime.Ticks);
return Math.Round(minuteSpan.TotalMinutes,2);
}
public static double DiffHours(DateTime startTime, DateTime endTime)
{
TimeSpan hoursSpan = new TimeSpan(endTime.Ticks - startTime.Ticks);
return Math.Round(hoursSpan.TotalHours, 2);
}
public static double DiffDays(DateTime startTime, DateTime endTime)
{
TimeSpan daysSpan = new TimeSpan(endTime.Ticks - startTime.Ticks);
return Math.Round(daysSpan.TotalDays,2);
}
public static double SecondsTransform(double seconds, TimeUnit unit)
{
switch (unit)
{
case TimeUnit.Seconds:
return seconds;
case TimeUnit.Minutes:
return seconds / 60;
case TimeUnit.Hours:
return seconds / 3600;
case TimeUnit.Days:
return seconds / 86400;
case TimeUnit.Months:
return seconds / 2592000;
case TimeUnit.Years:
return seconds / 946080000;
default:
return -1;
}
}
public static double Transform2Seconds(double source, TimeUnit unit)
{
switch (unit)
{
case TimeUnit.Seconds:
return source;
case TimeUnit.Minutes:
return source * 60;
case TimeUnit.Hours:
return source * 3600;
case TimeUnit.Days:
return source * 86400;
case TimeUnit.Months:
return source * 2592000;
case TimeUnit.Years:
return source * 946080000;
default:
return -1;
}
}
}
}