سؤال

أحتاج إلى دالة يمكنها إرجاع الفرق بين التاريخين أدناه بـ 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;

وهناك الكثير من المدمج في الأساليب في الفئة زمنية لتفعل ما تريد، أي بمعنى.

duration.TotalSeconds
duration.TotalMinutes

ومزيد من المعلومات يمكن الاطلاع على rel="noreferrer"> href="http://msdn.microsoft.com/en-us/library/system.timespan.aspx" .

نصائح أخرى

وحاول القيام بما يلي

double hours = (b-a).TotalHours;

إذا كنت ترغب فقط الفرق ساعة باستثناء الفرق في أيام يمكنك استخدام التالية

int hours = (b-a).Hours;

وينظر الفرق بين هاتين الخاصيتين أساسا عندما يكون الفرق بين وقت أكثر من 1 يوم. فإن الملكية ساعات فقط تقرير الفرق الفعلي ساعة بين التاريخين. حتى إذا تاريخين اختلفت من 100 سنة ولكن وقعت في نفس الوقت من اليوم، أن ساعات العودة 0. ولكن سوف TotalHours يعود الفرق بين في المبلغ الإجمالي للساعات التي وقعت بين اثنين من تواريخ (876000 ساعة في هذه الحالة).

والفرق الآخر هو أن TotalHours سيعود ساعات كسور. هذا قد يكون أو لا يكون ما تريد. إذا لم يكن كذلك، يمكن Math.Round تعديله لترضيك.

هل ربما تبحث عن:

int Difference = (a-b).Hours;
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours

سيتم عرض فارق التوقيت بالأبيض والأسود مع الوقت باستخدام هذه الطريقة.

 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();
        }
    }

استخدم معرف الحقل الخاص بك

فار t1 يلتقط قيمة 04:00

تحقق من هذا الرمز قد يكون مفيدًا لشخص ما.

scroll top