如何通过格式将字符串转换为Datetime?

可能重复:
在c#中将字符串转换为DateTime

如何通过格式将字符串转换为DateTime?

Convert.ToDateTime("12/11/17 2:52:35 PM") 

结果是12/11/2017 02:52:35 PM这是不正确的,因为我的期望是11/17/2012 02:52:35 PM

您正在寻找DateTime.ParseExact()

 DateTime.ParseExact(myStr, "yy/MM/dd h:mm:ss tt", CultureInfo.InvariantCulture); 

使用DateTime.ParseExact()方法。

使用指定的格式和特定​​于区域性的格式信息将指定的日期和时间字符串表示forms转换为其DateTime等效forms。 字符串表示的格式必须与指定的格式完全匹配。

  DateTime result = DateTime.ParseExact(yourdatestring, "yy/MM/dd h:mm:ss tt", CultureInfo.InvariantCulture); 

最好使用DateTime.*Parse方法之一。

它们采用表示DateTime的字符串,格式字符串(或它们的数组)和一些其他参数。

自定义格式字符串为yy/MM/dd h:mm:ss tt

所以:

 var date = DateTime.ParseExact("12/11/17 2:52:35 PM", "yy/MM/dd h:mm:ss tt" CultureInfo.InvariantCulture); 

您需要指定字符串的文化 :

 // Date strings are interpreted according to the current culture. // If the culture is en-US, this is interpreted as "January 8, 2008", // but if the user's computer is fr-FR, this is interpreted as "August 1, 2008" string date = "01/08/2008"; DateTime dt = Convert.ToDateTime(date); Console.WriteLine("Year: {0}, Month: {1}, Day: {2}", dt.Year, dt.Month, dt.Day); // Specify exactly how to interpret the string. IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true); // Alternate choice: If the string has been input by an end user, you might // want to format it according to the current culture: // IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture; DateTime dt2 = DateTime.Parse(date, culture, System.Globalization.DateTimeStyles.AssumeLocal); Console.WriteLine("Year: {0}, Month: {1}, Day {2}", dt2.Year, dt2.Month, dt2.Day); /* Output (assuming first culture is en-US and second is fr-FR): Year: 2008, Month: 1, Day: 8 Year: 2008, Month: 8, Day 1 */ 

试试这个

 dateValue = DateTime.ParseExact(dateString, "yy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"), DateTimeStyles.None); 

“tt”是AM / PM指示符。