1

我有产品列表,每个产品都有 DateTime 类型的创建日期。我想拿一些在我输入时间后创建的字符串类型的产品。

我以字符串类型输入EnteredDate,如下格式: 05/16/2012

1.    var dates = from d in Products
2.                where d.CreateDate >= DateTime.ParseExact( EnteredDate, "mm/dd/yy", null )
3.                select d;

在第二行中,我收到错误,因为字符串未被识别为“mm/dd/yy”的有效日期时间。我还尝试了 DateTime.Parse()、Convert.ToDateTime() 并得到了同样的错误。如何按创建日期过滤此产品列表?

4

2 回答 2

5

“mm”是分钟,而您的年份是 4 位数字,而不是 2。如果您的格式真的总是那样,您想要“MM/dd/yyyy”。你在这方面有多自信?(特别是,如果它是由用户输入的,你可能应该让你的代码对文化敏感......)

我建议将解析部分从查询中拉出来,如果你真的有一个固定的格式,也可能使用不变的文化进行解析:

DateTime date = DateTime.ParseExact(EnteredDate, "MM/dd/yyyy",
                                    CultureInfo.InvariantCulture);

var dates = Products.Where(d => d.CreateDate >= date);
于 2012-08-23T06:22:44.803 回答
1

称呼

DateTime.ParseExact(EnteredDate, "MM/dd/yyyy", CultureInfo.InvariantCulture); 
于 2012-08-23T06:25:13.180 回答