3

このコードで:

public static bool PlatypusIsAFornightOrLessOld(int PlatypusID) {
const int FORTNIGHT = 14;
const string sql = @"SELECT PLATYPUSBIRTHDATE
            FROM PLATYPI 
            WHERE PLATYPUSID = :PLATYPUSID";
DateTime dt;
try {
    using (var ocmd = new OracleCommand(sql, oc)) {
        ocmd.Parameters.Add("PLATYPUSID", PlatypusID);
        dt = Convert.ToDateTime(ocmd.ExecuteScalar());
    }
    return (DateTime.Today - dt) <= FORTNIGHT;
} catch (Exception e) {
. . .

「return」行に「Operator '<=' cannot be applied to operands of type 'System.TimeSpan' and 'int'」というメッセージが表示されます。

4

2 に答える 2

7

あなたがする必要があります

return (DateTime.Today - dt).Days <= FORTNIGHT;

Daysは、タイムスパンの完全な日数を返します。端数日が必要な場合は、TotalDays を使用します。

于 2012-07-23T18:55:58.287 に答える
6

他の人は、からTimeSpan日数に行くことを提案しています。FORTNIGHTとしても表現する方がクリーンであることをお勧めしTimeSpanます。あるいは、さらに良いこと:締め切りを としてDateTime計算し、減算を完全に回避します。

public static bool PlatypusIsAFornightOrLessOld(int platypusId) {
    DateTime oneFortnightAgo = DateTime.Today.AddDays(-14);

    ... SQL stuff ...

    return dt >= oneFortnightAgo;
}

また、実際のコードを実際に理解していないことを願っています。SQL 操作を実行している同じメソッドでキャッチcatch(Exception e)することはほとんどありません。Exception

于 2012-07-23T19:03:09.603 に答える