我有一个文本框,用户应在其中输入格式为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将抛出ArgumentNullExceptionArgumentException


MSDN Article for ParseExact
MSDN Article for TryParseExact





  我有一个文本框,用户应在其中输入dd / mm / yyyy格式的日期,此日期在数据库中存储为yyyy / mm / dd。


显而易见的答案是:在进行字符串转换之前,请使用DateTimePicker和参数化查询。从长远来看,它将为您节省很多头痛。

09-10 02:57
查看更多