DateTime在值为DateTime.MinValue时为NULL,或者为Null

时间:2017-01-11 04:37:52

标签: c# datetime

在我的控制台应用中,我正在尝试格式化为HHmmss - >我确信这是由于我的数据类型,但如何NULL NULL而不显示1/1/0001 12:00:00 AM

这是我的语法

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? 试图计算显示1/1/0001 12:00:00 AM

4 个答案:

答案 0 :(得分:3)

Nullable DateTime。可以为空的DateTime可以为null。 DateTime结构本身不提供null选项。但是"DateTime?"可空类型允许您将null文本分配给DateTime类型。它提供了另一层次的间接。

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

使用问号语法

最容易指定可为空的DateTime

编辑:

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

另一个可能是

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

答案 1 :(得分:0)

我在搜索相同的问题时找到了这个参考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());
            }
        }
    }
}

您可以进入链接查找更多详细信息 感谢

答案 2 :(得分:0)

1/1/0001 12:00:00 AM是DateTime对象的最小值/默认值,如果要为DateTime对象赋值null,则意味着必须将它们设置为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");

答案 3 :(得分:0)

可能会尝试这个

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