Voglio confrontare due dateTime.DateTime Confronta C#
Es:
date1 = 13/01/2004 12:20:00
date2 = 13/01/2004 12:35:00
result = Compare(date2-date1);
O/P : 15 Minutes
Voglio confrontare due dateTime.DateTime Confronta C#
Es:
date1 = 13/01/2004 12:20:00
date2 = 13/01/2004 12:35:00
result = Compare(date2-date1);
O/P : 15 Minutes
Prova questo:
TimeSpan diff = date2.Subtract(date1);
Come su
if (date1 < date2)
{
// date1 is before date2
}
Per confrontare, si può semplicemente utilizzare il <
dell'operatore: date1 < date2
.
Se si desidera confrontare con una determinata risoluzione, provare date1.TotalMinutes == date2.TotalMinutes
(questo rispetto per lo stesso minuto).
Se volete sapere se la differenza è entro un certo lasso di tempo, utilizzare questo:
System.TimeSpan dt = date2.Subtract(date1);
if (dt.TotalMinutes < 15) //...
È possibile utilizzare
double minutes = d2.Subtract(d1).TotalMinutes;
Per ottenere la differenza totale in pochi minuti.
Non capisco perfettamente cosa stai chiedendo.
Se si desidera che il pseudo-codice che esprime in C# qui si va ...
//date1 = 13/01/2004 12:20:00
DateTime dateTime1 = new DateTime(2004, 01, 13, 12, 20, 0);
//date2 = 13/01/2004 12:35:00
DateTime dateTime2 = new DateTime(2004, 01, 13, 12, 35, 0);
//get the time difference - result = Compare(date2-date1);
TimeSpan result = dateTime2 - dateTime1;
//output is 15
Console.WriteLine(result.TotalMinutes);
ne dite:
Timespan ts = date2 - date1;
Console.WriteLine("Value of Minutes = ", ts.Minutes);
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now;
var x = date1.CompareTo(date2);
EDIT: Vedo ora che si voleva ottenere la differenza di tempo tra le due date. Per questo si usa la classe TimeSpan.
Ora questa è la soluzione migliore.
using System;
public class Example
{
public static void Main()
{
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";
Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
}
}
// The example displays the following output:
// 8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM
Nelle parole di Larry Wall c'è più di un modo per farlo. Se stai cercando il risultato -1, 0, +1 di un confronto entro un certo intervallo di tempo, prova una di queste varianti;
internal static int XDateCompare(DateTime date, DateTime other, int ticks)
{
var diff = date.Ticks - other.Ticks;
var result = Math.Abs(diff) <= ticks ? 0
: diff <= 0 ? -1
: 1;
Console.WriteLine("{0}\t{1}\t{2}\ts={3} milSec={4}", diff, other, result, ticks, date.Subtract(other).Duration().TotalMilliseconds);
return result;
}
internal static int XDateCompare(DateTime date, DateTime other, double milliseconds)
{
double diff =
date.Subtract(other)
.TotalMilliseconds;
var result = Math.Abs(diff) <= milliseconds ? 0
: diff <= 0 ? -1
: 1;
Console.WriteLine("result {0} diff {1} vs ms {2}", result, diff, milliseconds);
return result;
}
Un TimeSpan è sempre positivo? Quindi: date2.Subtract (date1) è uguale a: date1.Subtract (date2) ??? – Michiel
@Michiel, no, il risultato sarà diverso, uno è un numero positivo (+15 minuti, +0,25 ore, +900000 tick) e un altro è negativo (-15 minuti, -0,25 ore, -900000 tick) – Artru