C #에서 자정 DateTime을 만드는 가장 좋은 방법


79

자정 DateTime을 만들어야합니다.

나는 이것을했다 :

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

아직 테스트하지 않았으며 작동한다고 가정하지만 더 나은 / 깨끗한 방법이 있습니까?

답변:


167

foo.Date, 또는 DateTime.Today오늘 날짜 만 사용


1
사람들은 일반적으로 자정을 하루의 마지막 1 초로 생각하는 반면, 이것은 하루의 1 초 (다른 자정)를 제공한다는 점을 고려할 가치가 있습니다. 따라서 자정의 인기있는 의미를 달성하려면 아래 Aruna의 답변 (및 Paul Suart의 의견)을 참조하십시오.
— jdoer1997

@ jdoer1997-앱이 자정에 무엇을해야하는지에 따라 다릅니다. 날짜, 요일 등에 의존하는 앱은 새로운 날의 첫 번째 체크에 하우스 키핑 작업을 수행 할 수 있습니다.
— LT Dan


15
DateTime endTime = DateTime.Now.Date;

이제 endTime.TimeOfDay.ToString()돌아온다"00:00:00"



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
자정이 첫 번째입니다. 마지막이 아니라 하루의 첫 번째 초입니다.
— Paul Suart

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에 오신 것을 환영합니다. 일부 코드를 제공하는 것 외에도 솔루션이 작동하는 이유와 이전 솔루션과 어떻게 다른지에 대한 추가 세부 정보를 제공하십시오.
— buczek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.