c # DateTime конвертировать в строку - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть набор результатов, который несколько раз хранится в переменных DateTime.Если значение равно нулю, я хочу установить переменную var в строку «Все еще в системе».

Я пробовал некоторые вещи toString (), но пока не получилось.

Этокод, который не работает.queryResult.Egresstime имеет тип DateTime и не может быть строкой.

if (Convert.IsDBNull(rdr["timeOut"]))
                {
                    queryResult.Egresstime = "Still logged in";
                }

Ответы [ 5 ]

2 голосов
/ 23 февраля 2011

Это кажется недостатком в дизайне, но если вам абсолютно необходимо сохранить его таким, вы можете установить его на точную дату смехотворно далеко в прошлом и проверить перед рендерингом дату для отображения «Все еще в системе», если этоДата.Хотя это ужасный способ создавать вещи!

0 голосов
/ 23 февраля 2011

Вы можете сделать его object вместо DateTime.

Я бы сделал Egresstime обнуляемым DateTime (DateTime?) и установил его на null.

if (Convert.IsDBNull(rdr["timeOut"]))
{
    queryResult.Egresstime = null;
}

Затем, прямо перед выводом его в свой отчет / пользовательский интерфейс / что угодно, я проверяю на ноль.

Egresstime.Text = queryResult.Egresstime == null ? "Still logged in" : Egresstime.ToString();
0 голосов
/ 23 февраля 2011

Вы не можете сохранить строку в Datetime!Но вы можете сделать это

Datetime? Egresstime ;

DateTime timeOut;
if(!DateTime.TryParse(rdr["timeOut"], out timeOut))
{
    Egresstime  = null;
}
If(Egresstime ==null)
{
//print still logged in
}
0 голосов
/ 23 февраля 2011

Вы не можете назначить строку для DateTime.

Возможно, вам нужно другое поле, указывающее, является ли время действительным, и если нет, вместо этого отобразить текст «Все еще вошли в систему»?

Если вы можете изменить EgressTime на DateLime с нулевым значением (DateTime?), вы можете использовать ноль, чтобы указать, что значение не существует.

0 голосов
/ 23 февраля 2011

Вам не повезло - вы не можете присвоить строку свойству типа DateTime.Это просто так не работает.

...