C # में मिडनाइट डेटटाइम बनाने का सबसे अच्छा तरीका


79

मुझे एक मिडनाइट डेटटाइम बनाने की आवश्यकता है

मैंने अभी यह किया है:

DateTime endTime = DateTime.Now;
endTime.Subtract(endTime.TimeOfDay);

अभी तक इसका परीक्षण नहीं किया है, मैं मान रहा हूं कि यह काम करता है लेकिन क्या एक बेहतर / स्वच्छ तरीका है?

जवाबों:


167

बस उपयोग करें foo.Date, या DateTime.Todayआज की तारीख के लिए


1
यह विचार करने योग्य है कि लोग आमतौर पर आधी रात को दिन के अंतिम दूसरे के रूप में सोचते हैं, जबकि यह दिन का 1 दूसरा (जो एक अलग मध्यरात्रि है) देता है। यदि आप आधी रात के लोकप्रिय अर्थ को पूरा करने का इरादा रखते हैं, तो कृपया नीचे अरुणा का उत्तर देखें (और पॉल सार्ट की टिप्पणी)
jdoer1997

@ jdoer1997 - यह निर्भर करता है कि आपके ऐप को आधी रात को क्या करना है। ऐसे ऐप्स जो तारीख, दिन-प्रति-सप्ताह, आदि पर निर्भर करते हैं, नए दिन में पहले टिक पर घर के कामों को करना चाहते हैं।
एलटी दान




11

आप DateTime.Todayआधी रात के सटीक सेकंड के साथ उपयोग कर सकते हैं ।

    DateTime today = DateTime.Today;
    DateTime mid = today.AddDays(1).AddSeconds(-1);
    Console.WriteLine(string.Format("Today: {0} , Mid Night: {1}", today.ToString(), mid.ToString()));

    Console.ReadLine();

यह प्रिंट होना चाहिए:

Today: 11/24/2016 10:00:00 AM , Mid Night: 11/24/2016 11:59:59 PM

इसने बहुत मदद की और यह वही है जो मैं चाहता था
मथायस मैककार्थी

4
आधी रात पहला है - यह दिन का पहला दूसरा है, आखिरी नहीं।
पॉल सुआर्ट

0
var dateMidnight = DateTime.ParseExact(DateTime.Now.ToString("yyyyMMdd"), "yyyyMMdd", CultureInfo.InvariantCulture);

3
कुछ कोड प्रदान करने के अलावा, कृपया कुछ अतिरिक्त विवरण जोड़ें कि आपका समाधान क्यों काम करता है और पिछले समाधानों से कैसे भिन्न होता है।
wlh

-1
    private bool IsServiceDatabaseProcessReadyToStart()
    {
        bool isGoodParms = true;
        DateTime currentTime = DateTime.Now;
        //24 Hour Clock
        string[] timeSpan = currentTime.ToString("HH:mm:ss").Split(':');
        //Default to Noon
        int hr = 12;
        int mn = 0;
        int sc = 0;

        if (!string.IsNullOrEmpty(timeSpan[0]))
        {
            hr = Convert.ToInt32(timeSpan[0]);
        }
        else
        {
            isGoodParms = false;
        }

        if (!string.IsNullOrEmpty(timeSpan[1]))
        {
            mn = Convert.ToInt32(timeSpan[1]);
        }
        else
        {
            isGoodParms = false;
        }

        if (!string.IsNullOrEmpty(timeSpan[2]))
        {
            sc = Convert.ToInt32(timeSpan[2]);
        }
        else
        {
            isGoodParms = false;
        }

        if (isGoodParms == true )
        {
            TimeSpan currentTimeSpan = new TimeSpan(hr, mn, sc);
            TimeSpan minTimeSpan = new TimeSpan(0, 0, 0);
            TimeSpan maxTimeSpan = new TimeSpan(0, 04, 59);
            if (currentTimeSpan >= minTimeSpan && currentTimeSpan <= maxTimeSpan)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }

StackOverflow में आपका स्वागत है। कुछ कोड प्रदान करने के अलावा, कृपया कुछ अतिरिक्त विवरण प्रदान करें कि आपका समाधान क्यों काम करता है और यह पिछले समाधानों से कैसे भिन्न होता है।
बुकेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.