0

伙计们,我有一个日期格式为 dd/mm/YYYY 的字符串。

但是我需要使用它作为 datetimepicker 控件。

我无法将值分配给 datetimepicker,我尝试了

string exp = "SELECT UserPwdExpiry FROM " + MainForm.schema + "Adm.SysUser WHERE USerId ='" + cmbUserID.Text + "'";

cmd = ccs.CreateCommand();
ccs.Open();
cmd.CommandText = exp;
DateTime expiry_ = ((DateTime)cmd.ExecuteScalar());
//string _expiry_= expiry_.ToShortDateString(); 
ccs.Close();

在这里分配

dtpPasswordExpiry.Value = Convert.ToDateTime(_expiry_); 

它给了我一个错误说,格式显示在 MaxDate 和 MinDate 之间。

请帮忙。

4

2 回答 2

0

如果DateTime expiry_ = ((DateTime)cmd.ExecuteScalar());这条线运行没有错误,你已经有 Datetime 对象。所以可以直接设置为

tpPasswordExpiry.Value =expiry_;

但是如果您将日期时间作为字符串存储在数据库中,那么上面的行将失败

string _User_modify= (string)cmd.ExecuteScalar();

DateTime dt;
if(DateTime.TryParseExact(_User_modify, 
                       "dd/MM/YYYY", 
                       CultureInfo.InvariantCulture, 
                       DateTimeStyles.None, 
                       out dt))
{
    tpPasswordExpiry.Value =dt;
}
于 2013-09-13T07:10:01.150 回答
0

我们已经有:

DateTime expiry = ((DateTime)cmd.ExecuteScalar());

所以:我们知道值是 a DateTimeDateTimePicker控件的属性.ValueaDateTime所以这里的正确语法是:

dtpPasswordExpiry.Value = expiry;

根据错误消息,唯一剩下的是MinDateand MaxDate。我怀疑您需要更改这两个属性的值,以使您expiry的值不超出范围MinDate-的合法值MaxDateexpiry如果不确定,只需打印出 和 的dtpPasswordExpiry.MinDatedtpPasswordExpiry.MaxDate

于 2013-09-13T07:17:07.487 回答