可为null的dateTime而不丢失方法
本文关键字:方法 null dateTime 可为 | 更新日期: 2023-09-27 18:28:49
我制作了一个方法来将datetime对象转换为仅限日期的格式。为了访问它,我必须将参数的值分配给数据表中的值。因此,显而易见的方法是在DateTime对象之后添加一个?
,使其可以为null,但这会删除它的方法(或者至少是我需要使用的方法),使我的方法变得毫无价值。
string dateWithOutTime(DateTime? datetime)
{
string reply = datetime.Date.ToString();
return reply;
}
用法:
string str = dateWithOutTime(*DataSet*.*DataTable[n]*.Rows[n][n] as DateTime?);
有没有一种方法可以在不添加任何额外对象的情况下实现这一点?
注意:星号(*
)表示变量类型/对象
DateTime?
的方法与DateTime
不同,它们是不同的类型。您必须使用DateTime?
的Value
属性检索实际的日期时间值:
string dateWithOutTime(DateTime? datetime)
{
if(datetime.HasValue)
return datetime.Value.Date.ToString();
else
return //...
}
请在此处阅读Nullable<T>
的文档。
除非我误解了你的问题,否则我认为你需要检查你的DateTime?参数是否为null。如果是,则返回一个空字符串(或要为缺少的日期显示的字符串)。如果不是,则可以使用Value
属性:
string dateWithOutTime(DateTime? datetime)
{
return datetime.HasValue ? datetime.Value.Date.ToString() : String.Empty;
}
更新
如果只希望字符串中的日期部分是区分区域性的,则可以使用ToShortDateString()
而不是ToString()
。您甚至可以省略Date
属性:
string dateWithOutTime(DateTime? datetime)
{
return datetime.HasValue
? datetime.Value.ToShortDateString()
: String.Empty;
}