3

私はこれを機能させることができません - 常に False を返します。

ここで何が恋しいですか?

DateTimeOffset parsedDate;

if ( DateTimeOffset.TryParseExact("2012-10-31 23:59:59", "YYYY-MM-dd HH:mm:ss"
                      , CultureInfo.InvariantCulture
                      , DateTimeStyles.None, out parsedDate) == false)
{
   throw new ArgumentException("dateToPare", dateToParse);
}
4

3 に答える 3

11

yyyyMSDNによると、小文字にする必要があります。

于 2012-11-04T10:37:08.227 に答える
5

年を「yyyy」にしてみてください - 小文字

于 2012-11-04T10:36:58.650 に答える
2

これを試して:

[TestCase("2012-10-31 10:59:59", 2012, 10, 31, 10, 59, 59)]
[TestCase("2012-10-31 23:59:59", 2012, 10, 31, 23, 59, 59)]
public void ParseExactTest2(string dateTimeString, int year, int month, int day, int hour, int minute, int second)
{
    DateTime actual = DateTime.ParseExact(dateTimeString, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);
    DateTime expected = new DateTime(year, month, day, hour, minute, second);
    Assert.AreEqual(expected, actual);
}

指摘したように: yyyy は小文字でなければなりません。別の方法として、例外をスローする場合は、TryParseExact の代わりに ParseExact を使用します。ParseExact を使用すると、フレームワークによってスローされた正しい例外を無料で取得できます。おそらくそれをキャッチして、parseexception を innerexception として引数例外をスローしてみてください。

于 2012-11-04T10:59:11.260 に答える