嘿,你怎么能在给定的日期进行字符串比较匹配,DateTime.TryParseExact
似乎是明智的选择,但我不知道如何在下面的方法中构建争论:
public List<Dates> DateEqualToThisDate(string dateentered)
{
List<Dates> date = dates.Where(
n => string.Equals(n.DateAdded,
dateentered,
StringComparison.CurrentCultureIgnoreCase)).ToList();
return hiredate;
}
答案 0 :(得分:13)
如果您完全了解日期/时间的格式(即它永远不会改变,并且不依赖于用户的文化或区域设置),那么您可以使用DateTime.TryParseExact
。
例如:
DateTime result;
if (DateTime.TryParseExact(
str, // The string you want to parse
"dd-MM-yyyy", // The format of the string you want to parse.
CultureInfo.InvariantCulture, // The culture that was used
// to create the date/time notation
DateTimeStyles.None, // Extra flags that control what assumptions
// the parser can make, and where whitespace
// may occur that is ignored.
out result)) // Where the parsed result is stored.
{
// Only when the method returns true did the parsing succeed.
// Therefore it is in an if-statement and at this point
// 'result' contains a valid DateTime.
}
格式字符串可以是完全指定的custom date/time format(例如dd-MM-yyyy
),也可以是general format specifier(例如g
)。对于后者,文化对于如何格式化日期很重要。例如,在荷兰,日期写为26-07-2012
(dd-MM-yyyy
),而在美国,日期则写为7/26/2012
(M/d/yyyy
)。
但是,只有当您的字符串str
仅包含您要解析的日期时,这一切才有效。如果你有一个更大的字符串,在日期周围有各种不需要的字符,那么你必须先在那里找到日期。这可以使用正则表达式来完成,正则表达式本身就是一个完整的其他主题。可以找到有关C#中正则表达式(正则表达式)的一些常规信息here。正则表达式引用为here。例如,可以使用正则表达式d/M/yyyy
找到类似于\d{1,2}\/\d{1,2}\/\d{4}
的日期。
答案 1 :(得分:0)
另一种方法是将您的日期从string
转换为DateTime
。如果有可能,我会将DateAdded
保留为DateTime
。
Bellow是一个在LINQPad中运行的代码
public class Dates
{
public string DateAdded { get; set; }
}
List<Dates> dates = new List<Dates> {new Dates {DateAdded = "7/24/2012"}, new Dates {DateAdded = "7/25/2012"}};
void Main()
{
DateEqualToThisDate("7/25/2012").Dump();
}
public List<Dates> DateEqualToThisDate(string anything)
{
var dateToCompare = DateTime.Parse(anything);
List<Dates> hireDates = dates.Where(n => DateTime.Parse(n.DateAdded) == dateToCompare).ToList();
return hireDates;
}