2017-01-11 4 views
5

В моем консольном приложении я пытаюсь отформатировать до HHmmss -> Я уверен, что это связано с моими типами данных, но как я могу это сделать NULL, когда NULL и не отображается 1/1/0001 12:00:00 AM?DateTime To Be NULL, когда значение DateTime.MinValue или Null

Это мой синтаксис

public static DateTime fmtLST; 
public static string LST = null;   
if (LST != null) 
{ 
    IFormatProvider format = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat; 
    fmtLST = DateTime.ParseExact(LST, "HHmmss", format); 
} 

Console.WriteLine(fmtLST.ToString("hh:mm:ss tt")); 

Если изменено на public static DateTime? fmtLastScanTime; я получаю ошибку

«Нет перегрузки метода 'ToString' не принимает 1 аргументы

Как я могу есть этот дисплей NULL вместо 1/1/0001 12:00:00 AM? Пытается принять во внимание данные за 01.01.10001 12:00:00 AM

+0

если 'fmtLST' является' 'null' затем fmtLST.ToString()' поднимет исключение –

+1

Но это никогда не нуль - он будет по умолчанию 01/01/0001 12:00:00 AM. Я хочу, чтобы он возвращал NULL, а не дату/время по умолчанию –

ответ

0

Может быть, но попробовать это

IFormatProvider format = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat; 
       fmtLST = DateTime.ParseExact((LST != null ? LST : null), "HHmmss", format); 
+0

Это сделало трюк! Спасибо вам за это. –

+0

WC:) .......... – Maharshi

3

Nullable DateTime. Значение nullTime с нулевым значением может быть нулевым. Сама структура DateTime не предоставляет нулевой вариант. Но тип nullable "DateTime?" позволяет присвоить нулевой литерал типу DateTime. Он обеспечивает еще один уровень косвенности.

public static DateTime? fmtLST; 
//or 
public static Nullable<DateTime> fmtLST; 

обнуляемого DateTime наиболее легко задаются с помощью синтаксиса знак вопроса

Edit:

Console.WriteLine(fmtLST != null ? fmtLST.ToString("hh:mm:ss tt") : ""); 

Еще один может быть

if(fmtLST == DateTime.MinValue) 
{ 
    //your date is "01/01/0001 12:00:00 AM" 
} 
+0

Я использую переменную fmtLST, чтобы я мог форматировать DateTime.ParseExact (LST, «HHmmss», формат); Как я буду форматировать в вашем примере? –

+0

@ToastedBreadLeavesYouDead Посмотрите на отредактированную часть решения –

+0

Должен ли я использовать «n/a» в качестве условия else? Я изменил его как null для условия else, но возвратил 00:00 AM –

0

Я нашел этот refrence here когда Серийный выпуск на тот же выпуск

using System; 
using System.Text; 
using System.Windows.Forms; 
namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      Nullable nullDateTime; 
      //DateTime? nullDateTime = null; 
      nullDateTime = DateTime.Now; 
      if (nullDateTime != null) 
      { 
       MessageBox.Show(nullDateTime.Value.ToString()); 
      } 
     } 
    } 
} 

вы можете пойти в ссылку найти более подробную информацию Спасибо

0

Значение 1/1/0001 12:00:00 AM это значение минимального/по умолчанию объекта DateTime, если вы хотите назначить нуль на объект DateTime означает, что вы должны сделать их как Nullable (как и другие рекомендации). Таким образом, декларация fmtLST должна быть:

public static DateTime? fmtLST = null; // initialization is not necessary 

В этом случае вы должны заботиться о печати выводится на консоль. это должно быть что-то вроде:

Console.WriteLine(fmtLST.HasValue ? fmtLST.Value.ToString("hh:mm:ss tt") : "Value is null"); 
+0

условие else - «Значение IS NULL» - я хочу, чтобы else был нулевым. –

+0

Как вы планируете печатать 'null' на экране?в 'Console.WriteLine()' –

+0

Я пишу на консоль, чтобы проверить, что значение на самом деле равно NULL. Конечным результатом моей процедуры является обновление таблицы SQL Server, где мне нужно значение NULL, а не значение Min.Date –

Смежные вопросы