Найкращий спосіб створити опівночний час в C #


79

Мені потрібно створити опівночі DateTime

Я щойно зробив це:

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

Ще не тестував, я припускаю, що це працює, але чи є кращий / чистіший спосіб?

Відповіді:


167

Просто використовуйте foo.Dateабо DateTime.Todayна сьогоднішню дату


1
Варто врахувати, що люди зазвичай вважають опівночі останньою секундою дня, тоді як це дає 1-ю секунду дня (це інша опівночі). Тож якщо ви маєте намір досягти популярного значення півночі, будь ласка, дивіться відповідь Аруни нижче (та коментар Пола Суарта)
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
Опівніч перша - це сама перша секунда дня, не остання.
Пол Суарт,

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.