下の2つの日付の差を24として返すことができる関数が必要です。
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
次のことができます。
TimeSpan duration = b - a;
Timespanクラスには、必要なことを行うための組み込みメソッドがたくさんあります。
duration.TotalSeconds
duration.TotalMinutes
詳細は こちら をご覧ください。
以下をお試しください
double hours = (b-a).TotalHours;
日数の差を除いて時間差だけが必要な場合は、次を使用できます
int hours = (b-a).Hours;
これら2つのプロパティの違いは、時間差が1日を超える場合に主に見られます。 Hoursプロパティは、2つの日付間の実際の時差のみを報告します。したがって、2つの日付が100年異なるが、同じ日に発生した場合、時間は0を返します。ただし、TotalHoursは、2つの日付の間に発生した合計時間(この場合は876,000時間)の差を返します。
もう1つの違いは、TotalHoursが小数時間を返すことです。これは、必要な場合とそうでない場合があります。そうでない場合、Math.Roundは好みに合わせて調整できます。
おそらく探していますか:
int Difference = (a-b).Hours;
int hours = (int)Math.Round((b - a).TotalHours)
この方法を使用すると、時間との時間差が表示されます。
private void HoursCalculator()
{
var t1 = txtfromtime.Text.Trim();
var t2 = txttotime.Text.Trim();
var Fromtime = t1.Substring(6);
var Totime = t2.Substring(6);
if (Fromtime == "M")
{
Fromtime = t1.Substring(5);
}
if (Totime == "M")
{
Totime = t2.Substring(5);
}
if (Fromtime=="PM" && Totime=="AM" )
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
var t = dt1.Subtract(dt2);
//int temp = Convert.ToInt32(t.Hours);
//temp = temp / 2;
lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else if (Fromtime == "AM" && Totime == "PM")
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
}
フィールドIDを使用します
var t1値をキャプチャします4:00 AM
このコードが誰かに役立つかもしれないことを確認してください。
var theDiff24 = (b-a).Hours