我正在尝试将日期转换为yyyyMMdd格式,但它表示支持的日期。
public override object StringToField(string from)
{
try
{
string[] elements = from.Trim().Split(new char[] { ' ' });
string date = RemoveNonNumericCharacters(elements[0]);
return DateTime.ParseExact(date,"yyyyMMdd",CultureInfo.InvariantCulture,DateTimeStyles.None);
}
catch (Exception ex)
{
throw new Exception(string.Format("Invalid date: {0}", from));
}
}
它只是试图转换这个,所以我不明白05/02/2018 22:28。
日历中不支持字符串表示的DateTime System.Globalization.GregorianCalendar。
编辑2
显示删除数字字符
private string RemoveNonNumericCharacters(string item)
{
string result = "";
foreach (char character in item)
{
if (char.IsNumber(character))
{
result += character;
}
}
return result;
}
编辑3
解析前的日期结果:06022018
答案 0 :(得分:3)
05/02/2018不是yyyyMMdd
。您的RemoveNonNumericCharacters
方法可能会将其转换为05022018,因此0502年,第20个月,第18天。将您传递给ParseExact
的字符串格式更改为ddMMyyyy
或MMddyyyy
(不清楚)哪个)。
答案 1 :(得分:0)
在第3次编辑中,您显示了collection.Find(filter1 & filter2 & filter3)
(“06022018”)字符串,该字符串为“MMddyyyy”格式,
假设在这个日期6是月份(不是日期)
您无法通过执行来解析它到目前为止,
collection.Find(Builders<BsonDocument>.Filter.And(filter1, filter2, filter3))
因为那样你就像年份一样:0602,月:20,日期:18。
这里月:20是不可能的。
你需要一个字符串“20180602”而不是“06022018”来解析你试图解析的方式。
但是如果日期字符串的格式是固定的,那么你就需要它。
你需要改变你的解析,如下所示,
date
如果6是日期,
DateTime.ParseExact(date,"yyyyMMdd",CultureInfo.InvariantCulture,DateTimeStyles.None);