我正在尝试使用.NET标准函数(DateTime.Parse / TryParse)解析以下日期: 7.92016 ,代表2016年9月7日。
所以我做了以下(没有成功,因为它引发了无效格式异常):
DateTime date;
DateTime.TryParseExact("7.92016", "d.Myyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
让我感到困扰的是,完全有可能确定月份在哪里结束,因为年份是用“yyyy”指定的。所以标准库应该能够管理它。
当然我可以手动拆分字符串,但有没有更清晰的解决方案来管理这种情况?
非常感谢你的帮助!
答案 0 :(得分:6)
由于M
接受从1
到12
(一位或两位数)的值,因此它是"贪婪的" (这样它会尝试接受尽可能多的数字),92
部分会关闭TryParseExact
。
var sept7of2016 =
DateTime.ParseExact("7.20169", "d.yyyyM",
CultureInfo.InvariantCulture,
DateTimeStyles.None);
换句话说,使用标准DateTime
方法无法完成任务。
答案 1 :(得分:1)
不确定是否有其他选项而不是手动拆分。 如果你想要它更干净,你可以写一个函数来转换它:
public static DateTime convertDate(string date)
{
int pos = date.IndexOf('.');
return Convert.ToDateTime(date.Substring(0, pos) + "/" +
date.Substring(pos + 1, (date.Length - 5 - pos)) + "/" +
date.Substring(date.Length - 4));
}