固定された時点ではなく、時間の 2 つの「スパン」または期間を差し引こうとしています。あなたのコードが現在言っていることは、20 時間 (実際には 20 時間) から 2 時間を減算したいということです。代わりに、s を使用する必要がありますDateTime
。難しいのは、タイムスパンの日付を決定することです。sを使用するようにコードを作り直して、DateTime
実際に計算しようとしている時間の「瞬間」を保持します。
編集: a から a に変換するTimeSpan
とDateTime
、結果の結果に影響する情報が失われる可能性があります。
var ts1 = new DateTime (1, 1, 1, hr1.Hours, hr1.Minutes, hr1.Seconds, hr1.Milliseconds) -
new DateTime (1, 1, 1, hr2.Hours, hr2.Minutes, hr2.Seconds, hr2.Milliseconds);
は次のものとは異なります。
var ts1 = new DateTime (1, 1, 1, hr1.Hours, hr1.Minutes, hr1.Seconds, hr1.Milliseconds) -
new DateTime (1, 1, 2, hr2.Hours, hr2.Minutes, hr2.Seconds, hr2.Milliseconds);
また:
var ts1 = new DateTime (1, 1, 2, hr1.Hours, hr1.Minutes, hr1.Seconds, hr1.Milliseconds) -
new DateTime (1, 1, 1, hr2.Hours, hr2.Minutes, hr2.Seconds, hr2.Milliseconds);
そのため、「ある時点」を で維持する必要がありますDateTime
。