本文介绍了在C#中如何将自定义日期和时间格式的字符串转换成日期DateTime类型的方法,所谓的自定义日期和时间格式的字符串指的是以特定的日期格式说明符组成的日期字符串,比如2014-08-05 13:01:30,日期格式说明符组成为 yyyy-MM-dd HH:mm:ss。
一般在程序中我们使用的都是常规的日期格式,比如 yyyy-MM-dd HH:mm:ss ,yyyy/MM/dd HH:mm:ss。但是总有列外,有时根据需求可能会有各种各样的日期格式,比如yyyy_MM_dd这样特殊的。因为日期格式的string类型要转换成DateTime类型必须要使用正确的日期格式。如果你的日期格式为yyyyMMddHHmmss这种自定义的日期格式,那么就无法将这个字符串转换成DateTime类型,必须使用特殊的方法进行转换。
正确的日期格式字符串要转换成日期类型直接使用Convert.ToDateTime(string value)方法或者DateTime.Parse(string s)方法即可。其他的则要使用DateTime.ParseExact方法进行转换,下面代码展示如何使用ParseExact方法进行转换(代码在控制台应用程序中运行):
/*使用ParseExact方法进行自定义日期格式字符串转换*/
DateTime dt = DateTime.ParseExact("20140804133047", "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
/*输出最终获取的DateTime类型*/
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
Console.ReadKey();
/*最终输出结果为:2014-08-04 13:30:47 */
这里演示的是转换单个自定义日期格式字符串,如果要转换的字符串可能存在多种日期格式,可以使用DateTime.ParseExact方法的另外一个重载参数,具体代码如下(代码在控制台应用程序中运行):
/*声明自定义日期格式字符串数组*/
string[] arrDateTime = { "20140804133047", "2014/08/04/13/30/47", "2014-08-04 13:30:47", "2014/08/04 13:30:47" };
/*声明允许转换的格式数组*/
string[] arrFormat = { "yyyyMMddHHmmss", "yyyy/MM/dd/HH/mm/ss", "yyyy-MM-dd HH:mm:ss", "yyyy/MM/dd HH:mm:ss" };
/*将所有不同格式的自定义日期格式字符串进行转换并显示*/
foreach (string strDt in arrDateTime)
{
/*
* 使用ParseExact方法进行多种日期格式匹配转换
* DateTime.ParseExact(string s, string[] formats, IFormatProvider provider, DateTimeStyles style)
*/
DateTime dt = DateTime.ParseExact(strDt, arrFormat, System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None);
Console.WriteLine(dt.ToString());
}
Console.ReadKey();
/*最终显示结果都是: 2014/8/4 13:30:47 */
这里成功的将4个自定义日期格式字符串都成功的转换成DateTime类型,使用DateTime.ParseExact的多格式匹配参数可以很好的实现这个功能。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/98342.html