告诉我如何纠正错误。
我正在尝试将字符串转换为正确的格式,但是对我来说不起作用。
Text = "9/21/2004"
DateTime d1 = DateTime.ParseExact(text.ToString(), "MM/dd/yyyy", null);
return (T)Convert.ChangeType(text, underlyingType);
完整方法:
public static T To<T>(this object text)
{
if (text == null) return default(T);
if (text.Equals(DBNull.Value)) return default(T);
if (text is string) if (string.IsNullOrWhiteSpace(text as string)) return default(T);
var type = typeof(T);
if(type.ToString() == "QuantLib.Date")
{
var dt = (DateTime)text;
QuantLib.Date date = new QuantLib.Date((int)dt.ToOADate());
return (T)Convert.ChangeType(date, type);
}
var underlyingType = Nullable.GetUnderlyingType(type) ?? type;
DateTime d1 = DateTime.ParseExact(text.ToString(), "dd/MM/yyyy", null);
return (T)Convert.ChangeType(d1, underlyingType);
}
public static T ToDatetime<T>(this QuantLib.Date date)
{
DateTime dt = Convert.ToDateTime(date.month() + " " + date.dayOfMonth().ToString() + ", " + date.year().ToString());
var type = typeof(T);
if (type == typeof(string))
return (T)Convert.ChangeType(dt.ToShortDateString(), typeof(T));
else
return (T)Convert.ChangeType(dt, typeof(T));
}
答案 0 :(得分:0)
MM/dd/yyyy
不是“ 9/21/2004”的正确格式,M/dd/yyyy
是正确的格式,因为您只给出了一个数字( M ),在日期( dd )之前。我建议您看看@elgonzo在评论中提供的official documentation。如果您在月份中使用两位数字,则M/dd/yyyy
仍然有效,例如“ 2004年12月21日”。