我试图将我的字符串格式的值转换为日期类型的格式dd/MM/yyyy。

this.Text="22/11/2009";

DateTime date = DateTime.Parse(this.Text);

有什么问题吗? 它有第二个覆盖请求IFormatProvider。这是什么?我也需要通过这个吗?如果是,在这种情况下如何使用?

编辑

Parse和ParseExact之间有什么区别?

编辑2

Slaks和Sam的答案都为我工作,目前用户正在提供输入,但这将由我保证,他们是有效的使用maskTextbox。

考虑到所有方面,如类型安全,性能或您的感觉,哪个答案更好


当前回答

基于这一参考资料,下一个方法对我来说是有效的:

// e.g. format = "dd/MM/yyyy", dateString = "10/07/2017" 
var formatInfo = new DateTimeFormatInfo()
{
     ShortDatePattern = format
};
date = Convert.ToDateTime(dateString, formatInfo);

其他回答

虽然上面的解决方案是有效的,你也可以修改webconfig文件与以下…

<configuration>
   <system.web>
     <globalization culture="en-GB"/>
   </system.web>
</configuration>

参考:本地机器与生产机器上的日期时间格式不同

你可以用also

this.Text = "22112009";
DateTime newDateTime = new DateTime(Convert.ToInt32(this.Text.Substring(4, 4)), // Year
                                    Convert.ToInt32(this.Text.Substring(2,2)), // Month
                                    Convert.ToInt32(this.Text.Substring(0,2)));// Day

为我工作以下代码:

DateTime date = DateTime.Parse(this.Text, CultureInfo.CreateSpecificCulture("fr-FR"));

名称空间

using System.Globalization;
private DateTime ConvertToDateTime(string strDateTime)
{
DateTime dtFinaldate; string sDateTime;
try { dtFinaldate = Convert.ToDateTime(strDateTime); }
catch (Exception e)
{
string[] sDate = strDateTime.Split('/');
sDateTime = sDate[1] + '/' + sDate[0] + '/' + sDate[2];
dtFinaldate = Convert.ToDateTime(sDateTime);
}
return dtFinaldate;
}

将字符串转换为datetime:

Datetime DT = DateTime.ParseExact(STRDATE,"dd/MM/yyyy",System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat)