gpt4 book ai didi

c# - DefaultView.RowFilter 不适用于日期

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:43 34 4
gpt4 key购买 nike

我正在使用这段代码来过滤我的行:

 (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = 
string.Format("DATUM > #{0}# AND DATUM < #{1}#", start, end);

start end 定义如下:

DateTime dt = dateTime_DO.Value;
DateTime dt1 = dateTime_OD.Value;
DateTime start = new DateTime(dt1.Year, dt1.Month, dt1.Day - 1, 23, 59, 59, 59);
DateTime end = new DateTime(dt.Year, dt.Month, dt.Day, 23, 59, 59, 59);

出于某种原因,它不起作用。这是 DataSource 结构的屏幕截图:

这是它为过滤行而构建的字符串:

DATUM > #8/1/2019 11:59:59 PM# AND DATUM < #12/1/2019 11:59:59 PM#

最佳答案

DateTime.ToString() 返回当前文化格式的日期字符串,而过滤器表达式将使用不变文化而不是当前文化进行解析。

All literal expressions must be expressed in the invariant culture locale. When DataSet parses and converts literal expressions, it always uses the invariant culture, not the current culture. [docs]

您可以使用以下方法以正确的格式传递日期:

dt.DefaultView.RowFilter = string.Format(CultureInfo.InvariantCulture.DateTimeFormat,
"Column >= #{0}#", dateTimeValue);

您还可以使用 standard date and time format specifiers像这样:

dt.DefaultView.RowFilter = string.Format(CultureInfo.InvariantCulture.DateTimeFormat,
"Column >= #{0:d}#", dateTimeValue);

关于c# - DefaultView.RowFilter 不适用于日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54159846/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com