2011-11-24 13 views
7

より古いかどうかを確認私は、ファイルが古くなっているかどうかを確認するために、C#で、このコードを書いた::ファイルの修正時刻が特定の日時

DateTime? lastTimeModified = file.getLastTimeModified(); 
     if (!lastTimeModified.HasValue) 
     { 
      //File does not exist, so it is out of date 
      return true; 
     } 
     if (lastTimeModified.Value < DateTime.Now.AddMinutes(-synchIntervall)) 
     { 
      return true; 
     } else 
     { 
      return false; 
     } 

私はPythonでこれを書いどうすればよいですか?

私はこれをPythonで試しました。

statbuf = os.stat(filename) 
if(statbuf.st_mtime < datetime.datetime.now() - self.synchIntervall): 
    return True 
else: 
    return False 

私はあなたが(time.time 1との組み合わせで)os.path.getmtime機能を使用したい、次の例外

message str: unsupported operand type(s) for -: 'datetime.datetime' and 'int' 
+0

あなたはこれまで何をしていますか?あなたが知らないことについてより具体的にしてみてください。誰かがあなたのためにすべてのコードを書くことを期待しないでください。 –

+0

私は私が試みたものをconlcudeに私の答えを編集しました。 – Luke

答えて

15

を得ました。これはあなたに考えを与えるはずです:

>>> import os.path as path 
>>> path.getmtime('next_commit.txt') 
1318340964.0525577 
>>> import time 
>>> time.time() 
1322143114.693798 
+1

この奇妙な数字は正確に何を表していますか?そしてそれを日付とどのように比較すればいいですか? – Luke

+1

@ルーク - [Unix epoch](http://en.wikipedia.org/wiki/Unix_time)のタイムスタンプで、単位は秒です。それらを通常の実数として使用します:それらを加減算します。したがって、 'time_a' - ' time_b'が '3600'を与える場合、それは2時間の間に1時間が経過したことを意味します... – mac

1

Pythonはそれを縮小することはできませんのでごsynchIntervallはdatetimeオブジェクトではないことがある問題を使用する必要があり、datetimeからintをsubstractすることはできません。別のdatetimeオブジェクトを使用する必要があります。 のような:

synchIntervall = datetime.day(2) 

または

synchIntervall = datetime.hour(10) 

以上の完全な1:

synchIntervall = datetime.datetime(year, month, day, hour=0, minute=0, second=0) 

最初の3が必要とされています。 この方法で、datetime.datetime.now()値を使用して計算できる値の変数を決定します。

関連する問題