44

私たちが持っているとしましょう

DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000");

DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000");

それをC#で比較して、どの時刻が「遅い」かを言うにはどうすればよいですか?

4

4 に答える 4

96

TimeOfDayプロパティを使用して、それと比較することができます。

TimeSpan.Compare(t1.TimeOfDay, t2.TimeOfDay)

ドキュメントによると:

-1  if  t1 is shorter than t2.
0   if  t1 is equal to t2.
1   if  t1 is longer than t2.
于 2012-04-24T00:34:01.667 に答える
31

、、、、、演算子はすべて、<オブジェクト<=に対して直接機能します。したがって、このようなものは機能します:>>===DateTimeTimeSpan

DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000");
DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000");

if(t1.TimeOfDay > t2.TimeOfDay) {
    //something
}
else {
    //something else
}
于 2012-04-24T00:33:32.620 に答える
5

次のDateTime.Compare方法を使用します。

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);

編集:時間を比較し、日付を無視したい場合は、他のTimeOfDay人が提案したように使用できます。きめの細かいものが必要な場合は、HourandMinuteプロパティを使用することもできます。

于 2012-04-24T00:32:11.807 に答える
1

C#でのタイムゾーン変換について説明しているこれらの例を参照してください。

var startTime = new System.TimeSpan(23,0,0);
var endTime = new System.TimeSpan(02,0,0);

var startDateTime = new DateTime(DateTime.UtcNow.Date.Year, DateTime.UtcNow.Date.Month, DateTime.UtcNow.Date.Day, startTime.Hours, startTime.Minutes, startTime.Seconds);
var endDateTime = new DateTime(DateTime.UtcNow.Date.Year, DateTime.UtcNow.Date.Month, DateTime.UtcNow.Date.Day, endTime.Hours, endTime.Minutes, endTime.Seconds);

var cetTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
var startConvertedTime = TimeZoneInfo.ConvertTimeFromUtc(startDateTime, cetTimeZone);
var endConvertedTime = TimeZoneInfo.ConvertTimeFromUtc(endDateTime, cetTimeZone);

Console.WriteLine(startConvertedTime.TimeOfDay);
Console.WriteLine(endConvertedTime.TimeOfDay);

var currentTime = new TimeSpan(03,0,0);
Console.WriteLine(currentTime);

Console.WriteLine(currentTime >= startConvertedTime.TimeOfDay && currentTime <= endConvertedTime.TimeOfDay);
于 2021-12-15T08:05:50.287 に答える