C〓〓〓は2つの時間差の方法のコードを計算して共有します。


まず、簡単な概念をいくつか紹介します。以下のとおりです
1.DateTimeDateTime値の種類は、紀元0001年1月1日0時0分0秒から紀元9999年12月31日23時59分59秒までの具体的な日付時刻を表しています。したがって、DateTime値の種類で、想像の範囲内の任意の時間を記述することができる。一つのDateTime値は具体的な時刻を表しています。
2.TimeSpan TimeSpan値は、TimeSpan値の下のリストにアクセスまたは処理するための多くの属性と方法を含み、その一部をカバーしている:Add:他のTimeSpan値と加算する。Days:日数で計算したTimeSpanの値を返します。Duration:TimeSpanの絶対値を取得します。Hours:時間計算のTimeSpan値Millisecondsを返します。ミリ秒で計算されたTimeSpan値を返します。Minutes:分で計算されたTimeSpan値を返します。Negate:現在のインスタンスの逆の数を返します。Seconds:秒で計算されたTimeSpan値を返します。Subtract:他のTimeSpan値を減算します。Ticks:TimeSpan値のtick数を返します。TotalDays:TimeSpan値が表す日数を返します。TotalHours:TimeSpan値が表す時間数を返します。TotalMilliseconds:TimeSpan値が表すミリ秒数を返します。TotalMinutes:TimeSpan値が表す分数を返します。TotalSeconds:TimeSpan値が表す秒数を返します。
二、上の紹介に基づいて、実例を説明します。

/// <summary>
///
/// </summary>
/// <param name="t"> 1</param>
/// <param name="t2"> 2</param>
/// <returns> : ( )</returns>
private long TimeDiff(DateTime t, DateTime t2)
{
    long lReturn = -1;
    System.TimeSpan NowValue = new TimeSpan(t.Ticks);
    System.TimeSpan TimeValue = new TimeSpan(t2.Ticks);
    System.TimeSpan DateDiff = TimeSpan.Zero;
    try
    {
//
//DateDiff = TimeValue.Subtract(NowValue).Duration();
DateDiff = TimeValue.Subtract(NowValue);
int hours = DateDiff.Hours;
int minutes = DateDiff.Minutes;
int seconds = DateDiff.Seconds;
int milliseconds = DateDiff.Milliseconds;

string TimeDiff = hours.ToString() + ":"
    + minutes.ToString() + ":"
    + seconds.ToString() + "."
    + milliseconds.ToString();
Program.log.WriteLog(" :"+TimeDiff, System.DateTime.Now.ToString(), Orid.Log.LogManagerBase.LogMode.logNormal);
// , ,
if (hours <= 0 && minutes <= 0 && seconds <= 0 && milliseconds <= 0)
    hours += 24;

lReturn = hours * 3600 * 1000
    + minutes * 60 * 1000
    + seconds * 1000
    + milliseconds;
    }
    catch (Exception e) {
throw new Exception(e.Message);
    }
    return lReturn;
}
 

三、最後にこの関数を呼び出すといいです。

long dueTime = this.TimeDiff(System.DateTime.Now, Convert.ToDateTime(config.Pitch));
//timer = new System.Threading.Timer(tcb, auto, dueTime, System.Threading.Timeout.Infinite);
timer = new System.Threading.Timer(tcb, auto, dueTime, 24 * 3600 * 1000);
完了します。