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.