在我的控制台应用中,我正在尝试格式化为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
答案 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);