我有一个文本框,用户应在其中输入格式为dd/mm/yyyy
的日期,该日期在数据库中存储为yyyy/mm/dd
。
因此,我希望用户以dd/mm/yyyy
格式输入日期,以后再转换为yyyy/mm/dd
,以便可以查询数据库。
如何将用户输入日期dd/mm/yyyy
转换为yyyy/mm/dd
?
最佳答案
快速甚至肮脏:
string reformattedDate = DateTime.ParseExact(textBox1.Text, "dd/MM/yyyy", null).ToString("yyyy/MM/dd");
当然,这假定“文本框”的内容将始终采用假定的格式,因此应在进行检查之前确保该内容。还有一种更安全的方法,不需要其他检查:
DateTime result;
if(DateTime.TryParseExact(textBox1.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out result)
{
// Here you can safely use result
string reformattedDate = result.ToString("yyyy/MM/dd");
} else {
// Screw the user
}
这将尝试解析文本框的内容,并通过
out result
将其返回给您,如果成功,它将返回true。否则,您可以放心输入不是采用假定的格式,也不是有效的日期。另请注意,如果转换失败,
ParseExact
将抛出ArgumentNullException
或ArgumentException
。MSDN Article for ParseExact
MSDN Article for TryParseExact
我有一个文本框,用户应在其中输入dd / mm / yyyy格式的日期,此日期在数据库中存储为yyyy / mm / dd。
显而易见的答案是:在进行字符串转换之前,请使用DateTimePicker和参数化查询。从长远来看,它将为您节省很多头痛。