Вы должны вернуть TimeSpan
вместо string
. Вот как бы я это сделал:
static TimeSpan GetTime(double percentage, TimeSpan startTime, TimeSpan endTime)
{
var percentageInTicks = (long)((endTime - startTime).Ticks * percentage);
return startTime.Add(TimeSpan.FromTicks(percentageInTicks));
}
Использование:
TimeSpan startTime = new TimeSpan(4, 0, 0);
TimeSpan endTime = new TimeSpan(16, 0, 0);
double[] percentages = new[] { 0, 0.5, 1 };
foreach (double percentage in percentages)
{
var result = GetTime(percentage, startTime, endTime);
Console.WriteLine(result.ToString());
}
Выход:
04:00:00
10:00:00
16:00:00
Редактировать: Вы можете сделать то же самое с DateTime
, если хотите:
static TimeSpan GetTime(double percentage, DateTime startDate, DateTime endDate)
{
var percentageInTicks = (long)((endDate - startDate).Ticks * percentage);
return startDate.TimeOfDay.Add(TimeSpan.FromTicks(percentageInTicks));
}
Использование:
DateTime startDate = DateTime.Today.Add(new TimeSpan(4, 0, 0));
DateTime endDate = DateTime.Today.Add(new TimeSpan(16, 0, 0));
double[] percentages = new[] { 0, 0.5, 1 };
foreach (double percentage in percentages)
{
var result = GetTime(percentage, startDate, startDate);
Console.WriteLine(result.ToString());
}