.net DateTime форматирование скрыть время, если полночь? - PullRequest
3 голосов
/ 03 августа 2011

Я работаю над форматированием даты и времени для отображения на графике, и пока он отлично работает.У меня есть строка формата:

М / дд / гггг ЧЧ: мм: сс

, и она печатается так, как мне бы хотелось, кроме следующего: Я хочу полностью скрыть ЧЧ:мм: сс, если время полночь.

Можно ли обойтись без пользовательского iformatprovider?

Спасибо!

Ответы [ 4 ]

8 голосов
/ 03 августа 2011
DateTime time = DateTime.Now; 
string txt = time.ToString(time == time.Date ? "M/dd/yyyy" : "M/dd/yyyy HH:mm:ss");
3 голосов
/ 29 мая 2013

Независимая от культуры версия решения, предложенного @JDunkerley, будет выглядеть так:

DateTime time = DateTime.Now;
string txt = time.ToString(time == time.Date ? "d" : "g");

Подробнее о стандартных строках формата даты и времени здесь .

3 голосов
/ 03 августа 2011
DateTime time = DateTime.Now; 

string format = "";

if (time.Hour == 0) 
{
   format = "M/dd/yyyy";
} 
else 
{
   format = "M/dd/yyyy HH:mm:ss";
}
0 голосов
/ 05 декабря 2015

Предлагаемое решение не очень хорошее, поскольку оно не учитывает локализованный формат времени пользователя и просто предполагает US English.

Вот как это должно было быть сделано:

public static string formatDateTimeWithTimeIfNotMidnight(DateTime dt)
{
    //RETURN:
    //      = String for 'dt' that will have time only if it's not midnight

    if (dt != dt.Date)
    {
        //Use time
        return dt.ToString();
    }
    else
    {
        //Only date
        return dt.ToShortDateString();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...