将字符串转换为datetime

时间:2012-04-05 12:06:19

标签: string datetime

我有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),当我将其与数据库进行比较时,它没有显示任何数据,但实际上有一些数据用于此日期。

3 个答案:

答案 0 :(得分:1)

你的提问非常有限,但试着看看这个

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

答案 1 :(得分: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"));

希望有所帮助!

答案 2 :(得分: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));
        }
    }
}