奇怪的写行(DateTime结果)

本文关键字:DateTime 结果 | 更新日期: 2023-09-27 18:20:24

这里有一个小问题,希望你们能帮我解决。

Console.Write("{0} {1} {2} {3} {4} " + customerdetails[i].CustomerNo,
    customerdetails[i].surname,
    customerdetails[i].forname,
    customerdetails[i].street,
    customerdetails[i].town,
    customerdetails[i].DOB.ToString("dd/MM/yyyy"));

这个小东西实际上可以正常工作,并正确地生成所有内容,但在它弹出一些奇怪的东西之后,看起来有点像二进制代码。例如:

100姓氏123街镇11/11/1111//正确

    01-01-0001 0
    01-01-0001 0
    01-01-0001 0 //What is this? How to get rid of it
    01-01-0001 0

很明显,这只是代码的一部分,我认为这里有些地方有问题,但如果你需要更多的代码,就这么说吧。

奇怪的写行(DateTime结果)

最后的0CustomerNo,因为您的格式字符串是:

"{0} {1} {2} {3} {4} " + customerdetails[i].CustomerNo

即:

"{0} {1} {2} {3} {4} 0"

在这一点上,您取代了位置{4}的日期,但最后的0仍然存在。

要消除它,请将+替换为,,并将格式字符串替换为:

"{0} {1} {2} {3} {4} {5}"

现在CustomerNo将处于第一位置。

要替换默认DateTime值,请执行以下操作:

string dob;
if (customerdetails[i].DOB == DateTime.MinValue)
{
    dob = "(unknown)"; // or whatever
}
else
{
    dob = customerdetails[i].DOB.ToString("dd/MM/yyyy");
}

现在使用dob作为Console.Write()的参数。

我相信您创建了一个customerdetails实例数组,但只初始化了第一个索引实例。假设您的代码:

Console.Write("{0} {1} {2} {3} {4} " + customerdetails[i].CustomerNo,
    customerdetails[i].surname,
    customerdetails[i].forname,
    customerdetails[i].street,
    customerdetails[i].town,
    customerdetails[i].DOB.ToString("dd/MM/yyyy"));

处于for循环中,因此您可以获得customerdetails[0]的值,列表中的其余部分仅显示其默认值。

DateTime 的01-01-0001

整数的0

字符串的string.Empty

要清除不需要的值,只需从数组列表中删除那些未初始化的实例即可。

有没有办法设置[日期时间],这样它就不会显示默认值?只有我输入的?

默认的DateTime和代码设置的DateTime没有区别。如果要表示"无日期",请使用可为null的DateTime,表示为DateTime?