5

ちょっと、与えられた日付の文字列比較一致をどのように行うことができますかDateTime.TryParseExact、賢明なオプションのようですが、以下の方法で引数を構築する方法がわかりません:

public List<Dates> DateEqualToThisDate(string dateentered)
{
    List<Dates> date = dates.Where(
        n => string.Equals(n.DateAdded, 
                           dateentered,
                           StringComparison.CurrentCultureIgnoreCase)).ToList();
        return hiredate;
 }
4

2 に答える 2

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.
}

フォーマット文字列は、完全に指定されたカスタムの日付/時刻フォーマット(などdd-MM-yyyy)、または一般的なフォーマット指定子(などg)にすることができます。後者の場合、日付の形式については文化が重要です。たとえば、オランダでは日付は26-07-2012dd-MM-yyyy)と表記されますが、米国では日付は7/26/2012M/d/yyyy)と表記されます。

ただし、これはすべて、文字列strに解析する日付のみが含まれている場合にのみ機能します。日付の周りにあらゆる種類の不要な文字が含まれる大きな文字列がある場合は、最初にそこにある日付を見つける必要があります。これは、それ自体がまったく別のトピックである正規表現を使用して実行できます。C#の正規表現(regex)に関する一般的な情報は、ここにあります。正規表現のリファレンスはこちらです。たとえば、に類似した日付d/M/yyyyは、正規表現を使用して見つけることができます\d{1,2}\/\d{1,2}\/\d{4}

于 2012-07-26T00:41:27.210 に答える
0

別の方法は、日付をからに変換することstringですDateTime。可能であれば、私はそのままにDateAddedしておきますDateTime

ベローは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;
}
于 2012-07-26T00:46:16.153 に答える