2016-11-04 10 views
0

NodaTimeはC#で多く使用されていますが、これは素晴らしいことですが、2つのLocalDateTimesの合計時間を取得しようとするとキャッチされました。私の2回は1週間以上離れています。 (1)nodatime合計時間(分)

long Mns = Period.Between(nowLdt,triggerLdt).Ticks.ToSeconds()/60; 

これは正しい結果をお届けします:: は(2)

double Mns = Period.Between(nowLdt,triggerLdt).ToDuration().ToTimeSpan().TotalMinutes; 

は、だから私の質問は本当に3つの質問です:

これは有効な結果を配信しません

なぜNodaTimeにTotalMinutes関数がないのですか?

上記(1)はなぜ機能しませんか?

(2)よりもクリーンな方法がありますか?

+0

ここでは地域の日時を使用するべきですか?あなたが期間よりも期間に関心を持つ可能性が高いように聞こえる "間の合計時間"について話しているとき。特に、「トリガー」は、ある特定の時間帯の何かになるように聞こえ、瞬間を表します。おそらく、適切なタイムゾーンを使用して両方の値をInstantsに変換してから、その間の時間をとるべきでしょうか? –

答えて

4

単にPeriod.Between静的メソッドを使用して、あなたが出力に表現することがしたい単位を指定。

Period p = Period.Between(start, end, PeriodUnits.Minutes); 
long totalMinutes = p.Minutes; 

あなたはPeriodUnits.DateAndTimeからPeriodUnits明示的に、そのデフォルト値を指定しなかった場合。これにより、可能なすべての日付と時刻のプロパティ(週を除く)が入力されたPeriodが返され、Minutesプロパティは1時間未満の分だけ残っています。 PeriodUnits.Minutesを指定するのTimeSpanにTotalMinutesを求めるようなものである単位を指定せずに使用言い換える

Period.Betweenは、TimeSpanMinutesを求めるようなものです。 PeriodMinutesプロパティはいずれかの方法で使用します。Periodの構成方法を制御するだけです。

+0

@ジョン、あなたのコメントをいただきました - ありがとうございます。はい、この特定の状況は、どちらの方法でも実行できましたが、ZonedDateTime /インスタント・パスを介して継続時間を使用すると、若干勇気がかかりました。だから私はLocalDateTime/Periodの道に行き、私が見逃した技術的な細部に夢中になった。 – user3152403

+0

これはまさに私が探していたもので、私の最初の3つの質問すべてに答えます。あなたの応答を感謝します。時間とともに、人は本当に慎重でなければなりません! – user3152403