दो DateTimes C # के बीच अंतर?


97

मुझे एक फ़ंक्शन की आवश्यकता है जो नीचे की तारीखों के बीच के अंतर को 24 के रूप में वापस कर सकता है।

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);

जवाबों:


185

आप निम्न कार्य कर सकते हैं:

TimeSpan duration = b - a;

आप की जरूरत है, यानी करने के लिए timespan वर्ग में तरीकों के बहुत सारे बनाया गया है

duration.TotalSeconds
duration.TotalMinutes

अधिक जानकारी यहां पाई जा सकती है


1
टाइमस्पैन स्पैन = x.ShiftEndTime.Subtract (x.ShiftStartTime) यदि (स्पैन। टोटलहॉर्स == 24) {do ...}
abmv

19

निम्नलिखित का प्रयास करें

double hours = (b-a).TotalHours;

यदि आप केवल उन दिनों के अंतर को छोड़कर घंटे का अंतर चाहते हैं, तो आप निम्नलिखित का उपयोग कर सकते हैं

int hours = (b-a).Hours;

इन दो गुणों के बीच का अंतर मुख्य रूप से देखा जाता है जब समय अंतर 1 दिन से अधिक होता है। घंटे की संपत्ति केवल दो तिथियों के बीच वास्तविक घंटे के अंतर की रिपोर्ट करेगी। इसलिए यदि दो तिथियां 100 साल से भिन्न होती हैं, लेकिन दिन में एक ही समय होती हैं, तो घंटे 0. लौट आएंगे। लेकिन कुल जमा दो तिथियों (इस मामले में 876,000 घंटे) के बीच घटने वाले घंटों के बीच का अंतर लौटाएगा।

दूसरा अंतर यह है कि TotalHours आंशिक घंटे लौटाएगा। यह वही हो सकता है या नहीं जो आप चाहते हैं। यदि नहीं, तो Math.Round इसे आपकी पसंद के अनुसार समायोजित कर सकता है।


अभी भी गलत। TotalHours एक डबल है, पूरे और आंशिक घंटे लौट रहा है।
विल्क्स-

प्रश्न के लिए इसका सही उत्तर है, वह चाहता है कि परिणाम 24 हो जो कि यह होगा। निश्चित रूप से वह टोटलहोर्स को काफी आसानी से राउंड कर सकता है अगर वह ऐसा चाहता है।
जेम्स एवेरी

@ मेरा जवाब 24 बिल्कुल पैदा करता है। ओपी ने निर्दिष्ट नहीं किया कि मूल्य को एक विशेष संख्या प्रारूप होना चाहिए।
जारेदपार

1
@abmv: "ओपी" - मूल पोस्टर। इस मामले में, आप।
सेरेब्रस

@ जेरेड, मुझे पता है कि मैं आपसे सहमत था। मुझे लगता है कि आपका उत्तर चुने हुए से बेहतर उत्तर है।
जेम्स एवेरी




-1

समय अंतर b / w समय-समय पर इस पद्धति का उपयोग करके दिखाया जाएगा।

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

अपने फ़ील्ड आईडी का उपयोग करें

var t1 4:00 AM के मान को कैप्चर करता है

यह कोड किसी के लिए मददगार हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.