0

我有 asp.net 应用程序,并且正在使用 Entity Framework 将其与数据库连接。在这个应用程序中,我有一个文本框来获取日期(我在这里使用日历 css 样式),以及它的字符串类型。

我的数据库中有一个列,它采用日期时间格式,我需要将文本框值与数据库中的日期列进行比较,为此我只使用了代码

public StudentAttendances(string date)
    {
        if (date != "")
        {
            DateTime date1 = Convert.ToDateTime(date);

            foreach (DataAccess.StudentAttendance studentAttendance in buDataEntities.StudentAttendances.Where(s => s.Date == date1))
            {
                this.Add(new StudentAttendance(studentAttendance.StudentId));
            }
        }
    }

例如,如果我在我的文本框中选择一个日期(格式为 04/05/2012),当我将其与数据库进行比较时,它没有显示任何数据,但实际上该日期有一些数据。

4

3 回答 3

1

您的要求非常有限,但请尝试查看

http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

于 2012-04-05T12:16:10.990 回答
1

您的代码正在比较日期和时间(小时、分钟等必须匹配)。尝试像这样比较一天部分:

buDataEntities.StudentAttendances.Where(s => s.Date.Subtract(date1).Days == 0)

我还认为您应该指定用户输入日期的格式。04/05/2012 可能意味着 4 月 4 日或 5 月 5 日,具体取决于您的计算机区域设置。以下是将美国格式的日期字符串转换为 DateTime 对象的示例(如下):

DateTime date1 = DateTime.Parse(date, new CultureInfo("en-US"));

希望有帮助!

于 2012-04-05T14:44:40.420 回答
1

请检查以下是否适合您:

public StudentAttendances(string date)
{
    if (date != "")
    {
        // please see the change from your given code
        DateTime date1 = DateTime.ParseExact(date, "MM/dd/yyyy",
                                   System.Globalization.CultureInfo.InvariantCulture);

        foreach (DataAccess.StudentAttendance studentAttendance in buDataEntities.StudentAttendances.Where(s => s.Date == date1))
        {
            this.Add(new StudentAttendance(studentAttendance.StudentId));
        }
    }
}
于 2012-04-05T14:58:05.067 回答