Tôi muốn so sánh hai ngày giờ.So sánh ngày giờ trong C#
Ex:
date1 = 13/01/2004 12:20:00
date2 = 13/01/2004 12:35:00
result = Compare(date2-date1);
O/P : 15 Minutes
Tôi muốn so sánh hai ngày giờ.So sánh ngày giờ trong C#
Ex:
date1 = 13/01/2004 12:20:00
date2 = 13/01/2004 12:35:00
result = Compare(date2-date1);
O/P : 15 Minutes
Hãy thử điều này:
TimeSpan diff = date2.Subtract(date1);
Làm thế nào về
if (date1 < date2)
{
// date1 is before date2
}
Để so sánh, bạn chỉ có thể sử dụng <
điều hành: date1 < date2
.
Nếu bạn muốn so sánh với độ phân giải đã cho, hãy thử date1.TotalMinutes == date2.TotalMinutes
(điều này so với cùng phút).
Nếu bạn muốn biết nếu sự khác biệt là trong một khoảng thời gian nhất định, sử dụng này:
System.TimeSpan dt = date2.Subtract(date1);
if (dt.TotalMinutes < 15) //...
Bạn có thể sử dụng
double minutes = d2.Subtract(d1).TotalMinutes;
Để có được sự khác biệt hoàn toàn trong vài phút.
Tôi không hiểu đầy đủ những gì bạn đang yêu cầu.
Nếu bạn muốn pseudo-code của bạn thể hiện trong C# ở đây bạn đi ...
//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);
Làm thế nào về:
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: Tôi thấy bây giờ mà bạn muốn để có được chênh lệch thời gian giữa hai ngày. Cho rằng bạn sử dụng lớp TimeSpan.
Đây là cược tốt nhất.
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
Theo lời của Larry Wall, có nhiều cách để thực hiện việc này. Nếu bạn đang tìm kết quả -1, 0, +1 của một so sánh trong một khoảng thời gian nhất định, hãy thử một trong các biến thể này;
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;
}
Là một TimeSpan luôn tích cực? Vì vậy: date2.Subtract (date1) bằng: date1.Subtract (date2) ??? – Michiel
@Michiel, không, kết quả sẽ khác nhau, một là số dương (+ 15 phút, +0,25 giờ, +900000 ve) và số khác âm (-15 phút, -0,25 giờ, -900000 ve) – Artru