如何转换字符串“;MM-DDTHH:MM”;到c#中的DateTime
本文关键字:MM DateTime 中的 MM-DDTHH 转换 字符串 何转换 | 更新日期: 2023-09-27 18:29:58
在我的代码中,我可以获得表示dateTime:的两种类型的字符串
1."2013-09-05T15:55"
2."09-05T19:10"
如何将其转换为有效的DateTime?
我尝试了以下代码,但它为第二种格式抛出了一个异常:
String departureDateStr = "09-05T19:10";
DateTime dt = Convert.ToDateTime(departureDateStr);
如何将第二种类型的字符串转换为有效的DateTime?我需要某种字符串操作吗?
thx,
Amir
string d1 = "2013-09-05T15:55";
string d2 = "09-05T19:10";
string[] formats = new string[] { "yyyy-MM-ddTHH:mm", "MM-ddTHH:mm" };
List<string> dates = new List<string>() { d1, d2 };
foreach (string date in dates)
{
DateTime dt;
if (DateTime.TryParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
//dt successfully parsed
}
}
如果数组中没有任何格式与输入匹配,TryParseExact
也会返回false,而不是抛出异常。
使用DateTime.ParseExact
方法和自定义日期时间格式字符串:
string departureDateStr = "09-05T19:10";
string departureDateStr2 = "2013-09-05T19:10";
var dt = DateTime.ParseExact(departureDateStr, "MM-ddTHH:mm", System.Globalization.CultureInfo.InvariantCulture);
var dt2 = DateTime.ParseExact(departureDateStr2, "yyyy-MM-ddTHH:mm", System.Globalization.CultureInfo.InvariantCulture);
或两种格式的通用调用:
var dt = DateTime.ParseExact(departureDateStr, new[] { "MM-ddTHH:mm", "yyyy-MM-ddTHH:mm" }, System.Globalization.CultureInfo.InvariantCulture);
您可以使用DatetTime.ParseExact()方法来完成此操作。它使用指定的格式和区域性特定的格式信息,将指定的日期和时间字符串表示形式转换为等效的DateTime
。字符串表示形式的格式必须与指定的格式完全匹配。
String departureDateStr = "09-05T19:10";
IFormatProvider provider = System.Globalization.CultureInfo.InvariantCulture;
string format = "MM-ddTHH:mm";
DateTime parsedDate = DateTime.ParseExact(departureDateStr, format, provider);
如果你多次需要这种转换,那么你甚至可以将其作为一种扩展方法,如下所示:
public static class StringExtensions
{
public static DateTime ToDate(this string str)
{
IFormatProvider provider = System.Globalization.CultureInfo.InvariantCulture;
string format = "MM-ddTHH:mm";
return DateTime.ParseExact(str, format, provider);
}
}