2つのDateTimeOffsetオブジェクトの差を日数で表示したい(たとえば、差が40日未満かどうかを確認する)。
FileTimeに変更することで実行できることはわかっていますが、もっと良い方法があるかどうか疑問に思っています。
2つのDateTimeOffsetオブジェクトの差を日数で表示したい(たとえば、差が40日未満かどうかを確認する)。
FileTimeに変更することで実行できることはわかっていますが、もっと良い方法があるかどうか疑問に思っています。
最も簡単な方法は、互いにオフセットを差し引くことです。TimeSpan
比較できるaを返します。
var timespan = DateTimeOffset1 - DateTimeOffset2;
// timespan < TimeSpan.FromDays(40);
// timespan.Days < 40
私はTimeSpanを渡す別のメソッドにそれを追加する機能を好む傾向があるので、数日または数分ではなく、時間の範囲だけに制限されます。何かのようなもの:
bool IsLaterThan(DateTimeOffset first, DateTimeOffset second, TimeSpan diff){}
楽しみのために、流暢なスタイルのコードが好きなら(私はテストと構成以外ではそれ以外の大ファンではありません)
public static class TimeExtensions
{
public static TimeSpan To(this DateTimeOffset first, DateTimeOffset second)
{
return first - second;
}
public static bool IsShorterThan(this TimeSpan timeSpan, TimeSpan amount)
{
return timeSpan > amount;
}
public static bool IsLongerThan(this TimeSpan timeSpan, TimeSpan amount)
{
return timeSpan < amount;
}
}
次のようなものを許可します:
var startDate = DateTimeOffset.Parse("08/12/2012 12:00:00");
var now = DateTimeOffset.UtcNow;
if (startDate.To(now).IsShorterThan(TimeSpan.FromDays(40)))
{
Console.WriteLine("Yes");
}
「開始日から現在までの時間が40日より短い場合」のようになります。
DateTimeOffset
を返す減算演算子がありますTimeSpan
:
if((dto1 - dto2).Days < 40)
{
}