我有一个DateTime类型的属性? (可为空的)。
目前它绑定到网格,时间戳显示在网格中。
我可以修改我的属性,以便它以某种方式忽略ToShortDateString
类似的时间戳但不将其转换为字符串吗?
答案 0 :(得分:2)
您可以使用组件的格式化程序,例如:
<asp:BoundField HeaderText="Data Emissão" DataField="DT_EMIS" DataFormatString="{0:d}" ></asp:BoundField>
答案 1 :(得分:1)
不要在源头做这件事。通过设置列格式在网格中进行。
答案 2 :(得分:1)
DateTime
类型的对象总是一个日期和时间。你无法将它们分开。
您可以使用.Date
属性将时间设置为午夜,但不会从变量中删除时间元素。
这有时会出现问题,因为在春季前进夏令时转换期间某些时区(例如巴西) 天,其中午夜不存在。因此,一旦你开始忽略DateTime
的时间部分,就不要再用它了。你必须暂停怀疑并对待它,好像时间成分不存在一样。
在您的特定情况下,您可能只需将DateTime
作为DateTime
对象传递到网格,然后将单元格的格式设置属性设置为仅使用短日期格式( d
)。
作为旁注,如果你在.Net中寻找一个真正的仅限日期的对象,你会在Noda Time库中找到它,在那里它被称为LocalDate
。您应能够轻松地将其中一个绑定到数据网格。
答案 3 :(得分:0)
DateAdd和DateDiff可以处理此问题。
select getdate()
, dateadd(d,0,datediff(d,0,getdate()))
datediff函数计算从0到今天的天数
然后dateadd将该天数添加到0以提供从0开始的整天天数,从而有效地截断时间戳。
答案 4 :(得分:0)
可以很容易地在代码中完成。
DateTime dt = <some_date_with_time>;
DateTime dateonly = dt.Date;
但如果您只想更改显示的内容,通常最好在显示组件上执行此操作。
答案 5 :(得分:0)
为什么不直接更改属性以便它只返回日期部分。 E.g。
而不是:
public DateTime? MyDateTime
{
get { return _myDateTime; }
}
private DateTime? _myDateTime;
您可以更改属性以仅返回日期部分:
public DateTime? MyDateTime
{
get
{
if (_myDateTime == null) return null;
return _myDateTime.Value.Date;
}
}
private DateTime? _myDateTime;
甚至添加一个只包含日期部分的新属性:
public DateTime? MyDateTime
{
get { return _myDateTime; }
}
private DateTime? _myDateTime;
public DateTime? MyDateOnly
{
get
{
if (MyDateTime == null) return null;
return MyDateTime.Value.Date;
}
}