日期时间格式问题:字符串未被识别为有效的DateTime
我想在C#中将输入字符串格式化为MM / dd / yyyy hh:mm:ss格式。
输入字符串的格式为MM/dd/yyyy hh:mm:ss
例如: "04/30/2013 23:00"
我尝试了Convert.ToDateTime()
函数,但它认为4为日期,3为月份,这不是我想要的。 实际上月是04,日期是03。
我也尝试了DateTime.ParseExact()
函数,但是得到了Exception。
我收到错误:
字符串未被识别为有效的DateTime。
您的日期时间字符串不包含任何秒数。 您需要以您的格式反映出来(删除:ss
)。
此外,如果您使用24小时,则需要指定H
而不是h
:
DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
浏览此处获取更多信息:
自定义日期和时间格式字符串
您可以使用DateTime.ParseExact()
方法。
使用指定的格式和特定于区域性的格式信息将指定的日期和时间字符串表示forms转换为其DateTime等效forms。 字符串表示的格式必须与指定的格式完全匹配。
DateTime date = DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);
这是一个DEMO
。
hh
是从01到12的12小时制, HH
是从00到23的24小时制。
有关更多信息,请查看Custom Date and Time Format Strings
试试这个:
string strTime = "04/30/2013 23:00"; DateTime dtTime; if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dtTime)) { Console.WriteLine(dtTime); }
改变文化,尝试这样可能对你有用
string[] formats= { "MM/dd/yyyy HH:mm" } var dateTime = DateTime.ParseExact("04/30/2013 23:00", formats, new CultureInfo("en-US"), DateTimeStyles.None);
检查详细信息: DateTime.ParseExact方法(String,String [],IFormatProvider,DateTimeStyles)
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
注意使用HH(24小时制)而不是hh(12小时制),以及使用InvariantCulture,因为有些文化使用除斜线以外的分隔符。
例如,如果文化是de-DE,则格式“dd / MM / yyyy”将期望作为分隔符(31.01.2011)。
下面的代码对我有用:
string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy"); String format ="MM/dd/yyyy"; IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true); DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture);