.NET(C#)时间日期字符串(String)格式化转换成Datetime异常报错问
原文转至:https://www.cjavapy.com/article/310/ ?
1)Convert.ToDateTime(string)
2)DateTime.ParseExact() ? System.Globalization.CultureInfo Culinfo = CultureInfo.GetCultureInfo("en-us");
或者 DateTime dt = DateTime.ParseExact(dateString,Culinfo); 2.?字符串(String)转换成Datetime异常报错解决方法 ? ? ? ? ? 错误信息:System.FormatException:“String ‘Nov 15 2005 12:00:00:000AM‘ was not recognized as a valid DateTime.”(String未被识别为有效的DateTime)。 ? ? ? ? 错误原因:出现这个错误信息,基本上都是转换的格式占位符( "MMM dd yyyy hh:mm:ss:ffftt")与时间字符串不匹配问题,要仔细检查。也可以使用格式占位符打印出来对比一下,代码如下: Console.WriteLine(DateTime.Now.ToString("MMM dd yyyy hh:mm:ss:ffftt"));
或 System.Globalization.CultureInfo Culinfo = CultureInfo.GetCultureInfo("en-us");
特别注意的情况: en-us:美国 1)MM和M是数字的月份,MMM是英文或中文的月份,主要看 2)tt代表12小时中上午或下午,是英文还是中文还要看 3)fff 代表秒的小数精度为三位。 3、字符串占位符说明 DateTime.ToString(format): 以下格式只能单独使用,表示特定的格式: d?ShortDatePattern D?LongDatePattern f?完整日期和时间(长日期和短时间) F?FullDateTimePattern(长日期和长时间) g?常规(短日期和短时间) G?常规(短日期和长时间) m、M?MonthDayPattern r、R?RFC1123Pattern s?使用当地时间的 SortableDateTimePattern(基于 ISO 8601) t?ShortTimePattern T?LongTimePattern u?UniversalSortableDateTimePattern 用于显示通用时间的格式 U?使用通用时间的完整日期和时间(长日期和长时间) y、Y?YearMonthPattern 以下格式可以组合使用,格式化出不同的日期显示格式: d?月中的某一天。一位数的日期没有前导零。 dd?月中的某一天。一位数的日期有一个前导零。 ddd?周中某天的缩写名称,在 AbbreviatedDayNames 中定义。 dddd?周中某天的完整名称,在 DayNames 中定义。 M?月份数字。一位数的月份没有前导零。 MM?月份数字。一位数的月份有一个前导零。 MMM?月份的缩写名称,在 AbbreviatedMonthNames 中定义。 MMMM?月份的完整名称,在 MonthNames 中定义。 y?不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。 yy?不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。 yyyy?包括纪元的四位数的年份。 gg?时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。 h?12 小时制的小时。一位数的小时数没有前导零。 hh?12 小时制的小时。一位数的小时数有前导零。 H?24 小时制的小时。一位数的小时数没有前导零。 HH?24 小时制的小时。一位数的小时数有前导零。 m?分钟。一位数的分钟数没有前导零。 mm?分钟。一位数的分钟数有一个前导零。 s?秒。一位数的秒数没有前导零。 ss?秒。一位数的秒数有一个前导零。 f?秒的小数精度为一位。其余数字被截断。 ff?秒的小数精度为两位。其余数字被截断。 fff?秒的小数精度为三位。其余数字被截断。 ffff?秒的小数精度为四位。其余数字被截断。 fffff?秒的小数精度为五位。其余数字被截断。 ffffff?秒的小数精度为六位。其余数字被截断。 fffffff?秒的小数精度为七位。其余数字被截断。 t?在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。 tt?在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。 z?时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。 zz?时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。 zzz?完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。 :?在 TimeSeparator 中定义的默认时间分隔符。 /?在 DateSeparator 中定义的默认日期分隔符。 %c?其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。 "c?其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“""”。 在String.Format中使用格式化: 在String.Format方法中也可以格式化这些结构对象,这些格式化的格式包含在“{}”之间,用“:”隔开。“:”前面为String.Format的索引值,和一般格式化一样,而“:”后面则是这些结构的格式化类型。如果使用占位符,则和索引之间使用“,”分割,正数表示右对齐,负数表示左对齐,而绝对值表示所占的字符宽度数,例如: string.Format("the value is {0,7:f3}",123.45);
例子:ToString()转换成日期格式: DateTime datetime = System.DateTime.Now;
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |