繁体   English   中英

无法将文本框(dd / MM / yyyy)日期转换为日期时间格式

[英]Unable to convert textbox(dd/MM/yyyy) date to datetime format

我有一个数据库日期“ 2014-11-26”。 我有一个格式为(dd-MM-yyyy)的压延机,我正在尝试按文本框选定日期从数据库中将一些值带入表单

  protected void txtdate_TextChanged(object sender, EventArgs e)
    {

        //DateTime timeIn = Convert.ToDateTime(txtdate.Text);
       // DateTime time1 = DateTime.ParseExact(txtdate.Text, "yyyy-MM-dd", CultureInfo.InvariantCulture);
        str = "select TimeIn,TimeOut from MusterRoll where EmpCode='" + ddcode.SelectedItem.Text + "' and Date='"+time1+"'";
        dr = conn.query(str);
        if (dr.Read())
        {
            DateTime time = dr.GetDateTime(0);
            TimeSelector1.SetTime(time.Hour, time.Minute, TimeSelector1.AmPm);
            DateTime time2 = dr.GetDateTime(1);
            TimeSelector2.SetTime(time2.Hour, time2.Minute, TimeSelector2.AmPm);
        }

    }

问题是数据库日期格式和我的日历格式不同。 我尝试了两种方法(放在命令行中),但显示错误消息,例如"input string was not in correct format" 我上网冲浪,找到了同样的答案。 我可以知道为什么显示错误吗? 我正在尝试使数据库日期格式和日历格式相同

首先, DateTime没有任何隐式格式。 它只有日期和时间值。 它们的String表示形式可以具有格式。

我强烈怀疑您用它们的字符串表示形式保存了DateTime值,这是一个可怕的想法。 阅读: 不良习惯:选择错误的数据类型DateTime值直接传递给参数化查询而不是字符串表示形式。 无论如何..

对于;

DateTime timeIn = Convert.ToDateTime(txtdate.Text); 

Convert.ToDateTime(string)方法将DateTime.Parse方法与CurrentCulture设置一起使用。 这意味着,如果您的字符串不是CurrentCulture的标准日期和时间格式,则代码将引发FormatException 我猜dd-MM-yyyy不是您CurrentCulture的标准日期和时间格式。

对于;

DateTime time1 = DateTime.ParseExact(txtdate.Text, "yyyy-MM-dd", CultureInfo.InvariantCulture);

当您使用DateTime.ParseExact ,您的字符串和格式应完全匹配。

将指定的日期和时间的字符串表示形式转换为其等效的DateTime。 字符串表示形式的格式必须与指定的格式完全匹配,否则将引发异常

就你而言 他们不是( "26-11-2014""yyyy-MM-dd" )。 请改用dd-MM-yyyy格式。

DateTime time1 = DateTime.ParseExact(txtdate.Text,
                                     "dd-MM-yyyy",
                                     CultureInfo.InvariantCulture);

然后,您可以从time1生成格式,例如;

time1.ToString("yyyy-MM-dd"); // A string formatted as 2014-11-26

对于命令部分,应始终使用参数化查询 这类字符串连接对SQL注入攻击开放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM