MODIFICA: come da commento, i tipi in realtà sono destinati a essere TimeSpan
anziché a DateTime
, a quel punto tutto è semplice.
Quando si chiede che cosa X proporzione è di Y, che è fondamentalmente la divisione, che è facilmente implementata su TimeSpan
: codice
public static double Divide(TimeSpan dividend, TimeSpan divisor)
{
return (double) dividend.Ticks/(double) divisor.Ticks;
}
Esempio:
using System;
using System.IO;
using System.Globalization;
using System.Linq;
class Test
{
static void Main()
{
TimeSpan x = new TimeSpan(0, 34, 23);
TimeSpan y = new TimeSpan(4, 12, 31);
Console.WriteLine(Divide(x, y)); // 0.13616 etc, i.e. 13%
}
public static double Divide(TimeSpan dividend, TimeSpan divisor)
{
return (double) dividend.Ticks/(double) divisor.Ticks;
}
}
fonte
2013-03-26 13:56:07
Ciò che è '34: 23'? Non è un tempo valido? – mattytommo
Sei sicuro che X e Y sono entrambi un 'DateTime'? Avrebbe più senso se entrambi fossero un 'TimeSpan'. –
@mattytommo Suppongo che siano 34 minuti e 23 secondi ... –